Yol*_*ola 10 c++ c-preprocessor
我认为预处理器逐个处理文件,我无法弄清楚如何使用包含文件,所以我认为这是不可能的,但听到别人的想法会很棒.
我有a.cpp:
#define A 1
Run Code Online (Sandbox Code Playgroud)
我想从中使用它2.cpp.
编辑:我不能修改第一个文件.所以现在我只是复制了定义.但问题仍然存在.
Luc*_*ore 19
其他翻译单元看不到源文件中的定义.实现文件是单独编译的.
你也可以
extern const int A = 1;在实现文件中执行它,并在您想要使用它时声明它extern const int A;.其中,我会说第一个选项可能是您可以使用的最差选项.
如果要共享两个源文件之间的定义,请将其移动到头文件并包含两个源文件中的头.
mydefines.h:
#ifndef MY_DEFINES_H
#define MY_DEFINES_H
#define A (1)
// other defines go here
#endif // MY_DEFINES_H
Run Code Online (Sandbox Code Playgroud)
source1.cpp:
#include "mydefines.h"
// rest of source file
Run Code Online (Sandbox Code Playgroud)
source2.cpp:
#include "mydefines.h"
// rest of source file
Run Code Online (Sandbox Code Playgroud)
您还可以在编译器命令行中指定define.对于跨平台代码(可能需要不同编译器的不同命令行),这可能很难维护.