我的问题是,预处理命令是不能跨源文件(.cpp)吗?
如下:
//main.cpp
#include <iostream>
using namespace std;#define _defualt
#include "defualt.h"int main()
{
f();
cout<<b<<endl;
return 1;
}//defualt.h
void f();
int b;//defualt.cppvoid f()
{
#ifdef _defualt
b = 10;
#endif
}
结果显示b = 0。我的本意是如果在main.cpp中定义了宏 _defualt
那么在defualt.cpp中的代码将使b = 10。
如下:
//main.cpp
#include <iostream>
using namespace std;#define _defualt
#include "defualt.h"int main()
{
f();
cout<<b<<endl;
return 1;
}//defualt.h
void f();
int b;//defualt.cppvoid f()
{
#ifdef _defualt
b = 10;
#endif
}
结果显示b = 0。我的本意是如果在main.cpp中定义了宏 _defualt
那么在defualt.cpp中的代码将使b = 10。
一般的方法是,在编译器的参数里传入这个编译变量。比如VC是/D _defualt。可以在工程设置里的预编译设置里加入这个编译宏。
这样就是在编译所有文件时都已经是定义的了。
另外默认这个单词是:default