C++ 条件编译指令:多个文件
C++ Conditional compilation directives: multiple files
我有 2 个文件,main.cpp
和 head.h
//main.cpp
#define DEBUG2019 1
#include 'head.h'
int main{
A A1;
return 0;
}
//head.h
class A{
#ifdef DEBUG2019
int p;
#endif
int q;
};
你看,我在main.cpp里定义了DEBUG2019
。但是在我的 visual studio 2019 中, int p
在 head.h
中仍然是灰色的。这是为什么?为什么 head.h
不知道 DEBUG2019
已经被定义了?你可能会建议我直接在头文件中定义 DEBUG2019
。但是我必须在 main.cpp
.
中定义它
要在项目级别定义宏,您可以将其定义为预处理器指令:右键单击和 select 属性,然后在 C/C++ ->Preprocessor-> Preprocessor Definitions 中定义您的宏.
或
在公共头文件中定义宏,并在相关的其他文件中使用它(你已经这样做了,所以你可以忽略灰色区域)。
就我而言,你应该使用#include "head.h" 而不是#include 'head.h'
这里是main.cpp的代码:
#include <iostream>
#define DEBUG2019 1
#include "head.h"
int main()
{
A A1;
return 0;
}
我有 2 个文件,main.cpp
和 head.h
//main.cpp
#define DEBUG2019 1
#include 'head.h'
int main{
A A1;
return 0;
}
//head.h
class A{
#ifdef DEBUG2019
int p;
#endif
int q;
};
你看,我在main.cpp里定义了DEBUG2019
。但是在我的 visual studio 2019 中, int p
在 head.h
中仍然是灰色的。这是为什么?为什么 head.h
不知道 DEBUG2019
已经被定义了?你可能会建议我直接在头文件中定义 DEBUG2019
。但是我必须在 main.cpp
.
要在项目级别定义宏,您可以将其定义为预处理器指令:右键单击和 select 属性,然后在 C/C++ ->Preprocessor-> Preprocessor Definitions 中定义您的宏.
或
在公共头文件中定义宏,并在相关的其他文件中使用它(你已经这样做了,所以你可以忽略灰色区域)。
就我而言,你应该使用#include "head.h" 而不是#include 'head.h'
这里是main.cpp的代码:
#include <iostream>
#define DEBUG2019 1
#include "head.h"
int main()
{
A A1;
return 0;
}