我有一段代码设置为采用常量整数参数(问题的维度),但它可以运行许多不同的维度。
我不想每次运行时都要更改硬编码维度,理想情况下我会定义几个虚拟标头函数,基本上只是:
#ifndef dim_define_h
#define dim_define_h
const int dimension = [DIMENSION SPECIFIC TO THIS HEADER FILE];
#endif
然后在编译时我可以使用该实例所需的头文件,如:
g++ dimension_6.h code.cpp
这样的事情可能吗?在头文件中定义一个常量并在另一个没有显式导入该头文件的文件中使用它?
编辑:
我的下一次尝试是仅使用main函数,将其与维度定义一起粘贴在不同的文件中,然后复制它。然后编译看起来像:
g++ dim_specific_main.cpp lots.cpp more.cpp helpers.cpp
我认为它正在通过main的编译来实现,它依赖于所有帮助文件中定义的辅助函数。不幸的是,当它试图编译辅助函数时,它需要在main.h中定义的常量,它似乎忘记了它。
编辑2:我现在意识到我正在尝试在编译时需要知道的地方使用这个变量,并且我认为编译后链接发生了,所以我不相信这种特殊的方法是可能的。答案 0 :(得分:6)
const int dimension = THE_DIMENSION;
然后用
编译g++ -DTHE_DIMENSION=6 code.cpp
不需要标头。