Compiler Warning (level 1) C4005


For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

'identifier' : macro redefinition

The macro identifier is defined twice. The compiler uses the second macro definition.

To fix by checking the following possible causes

  1. Defining a macro on the command line and in the code with a #define directive.

  2. Macros imported from include files.

To fix by using the following possible solutions

  1. Remove one of the definitions.

  2. Use an #undef directive before the second definition.

The following sample generates C4005:

// C4005.cpp  
// compile with: /W1 /EHsc  
#include <iostream>  
using namespace std;  
#define TEST "test1"  
#define TEST "test2"   // C4005 delete or rename to resolve the warning  
int main() {  
   cout << TEST << endl;