FIX: LDd Suppresses Implicit Definition of _DEBUG

This article was previously published under Q163369
This article has been archived. It is offered "as is" and will no longer be updated.
SYMPTOMS
When compiler option /LDd follows /MTd, /MDd or /MLd, _DEBUG is notdefined. This happens only if it is compiled from the command line. The IDEadds this definition by default in the project settings for debug build.
RESOLUTION
Specify /LDd before /MTd, /MDd or /MLd.
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listedat the beginning of this article.

This problem was corrected in Microsoft Visual C++ .NET.
MORE INFORMATION
When you use one of the compiler options /MTd, /MDd or /MLd, the symbol_DEBUG is automatically defined. However, if /LDd follows any of theseoptions on the compiler command line, then _DEBUG is not definedautomatically.

Steps to Reproduce Behavior

    // x.cpp or x.c    // Compile options needed to reproduce: /c /MTd /LDd    // Compile options for workaround: /c /LDd /MTd    #ifdef _DEBUG    #  pragma message("_DEBUG is defined")    #else    #  pragma message("_DEBUG is not defined")    #endif				
Properties

Article ID: 163369 - Last Review: 02/24/2014 08:26:59 - Revision: 3.0

  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 4.2 Enterprise Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • kbnosurvey kbarchive kbbug kbfix kbnoupdate kbcompiler KB163369
Feedback