PREfast und MFC
Da meine Ansprüche an meinen eigenen Code dergestalt sind, dass er ungestreift mit PREfast übersetzt werden können muss, habe ich bei meinen MFC-basierten Anwendungen immer ein kleines Problem: Die Headerfiles der MFC sind nicht PREfast-compliant und an diesen Headern schraubt man selber nix rum. Daher benutze ich meist folgenden kleinen Trick: Während in der stdafx.h die MFC-Headerfiles eingelesen werden, schalte ich die notorischen PREfast-Warnungen der MFC-Headers aus und schalte sie hinterher ein. Das tue ich nur, wenn auch ein Übersetzungslauf mit PREfast ansteht, denn ansonsten erhalte ich Warnungen für nicht-existierende Warnungsnummern (nämlich die aus PREfast). Das ganze sieht also in einer stdafx.h von mir etwa so aus:
#ifdef _PREFAST_
#pragma warning (push)
#pragma warning (disable: 6387)
#endif ///_PREFAST_
#include <afxwin.h>
#include <afxext.h>
/// include other stuff from MFC, yaddaa, yaddaa ...
#ifdef _PREFAST_
#pragma warning (pop)
#endif ///_PREFAST_
Durch das Makro _PREFAST_, das automatisch definiert ist, wenn ein Übersetzungslauf mit PREfast stattfindet, kann man somit sehr geschickt ganz selektiv die Warnung 6387 ausschalten.
Happy PREfasting, you know, I am!