|Important||This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer|
A symbol which enables errors in projects converted from previous versions of ATL.
Before version 7.0, ATL disabled a lot of warnings and left them disabled so that they never showed up in user code. Specifically:
C4127 conditional expression is constant
C4786 'identifier' : identifier was truncated to 'number' characters in the debug information
C4201 nonstandard extension used : nameless struct/union
C4103 'filename' : used #pragma pack to change alignment
C4291 'declaration' : no matching operator delete found; memory will not be freed if initialization throws an exception
C4268 'identifier' : 'const' static/global data initialized with compiler generated default constructor fills the object with zeros
C4702 unreachable code
In projects converted from previous versions, these warnings are still disabled by the libraries headers.
By adding the following line to the stdafx.h file before including libraries headers, this behavior can be changed.
If this #define is added, the ATL headers are careful to preserve the state of these warnings so that they are not disabled globally (or if the user explicitly disables individual warnings, not to enable them).
New projects generated with version 7.0 will have this #define set in stdafx.h by default.