我有一些C ++代码,它们当前依赖于硬编码常量,这些常量被导入到多个其他cpp文件中,我希望我的python(pyx)文件在运行时设置一次常量。
因此,cython.pyx
导入文件a.cpp
,b.cpp
和c.cpp
以及constants.hpp
文件a.cpp
,b.cpp
和c.cpp
全部导入constants.hpp
。
我希望有一个通用常量文件,例如new_constants.yml
,python导入并发送到cpp文件。这也意味着(我认为)每次我想调整常量时我都不必重新编译c代码。
我习惯使用脚本语言(python,js),所以使用旧的C ++代码会让我失望一点,我确信这个问题的部分听起来像是我迟钝的所以,谢谢你对我耐心。
这些只是一些奇怪的依赖关系,我无法解开思想。
答案 0 :(得分:2)
C ++在编译时将#include
'd文件插入到代码中(技术上在编译时 - 在预处理器运行期间),因此无法在运行时更改这些值。
如果您有以下
foo.h中
const int value = 42;
和foo.cpp
#include "foo.h"
int foo(){ return value; }
编译foo.cpp时,预处理器将替换foo.h
的确切内容来替换cpp文件中的#include "foo.h"
,然后编译器将看到
const int value = 42;
int foo(){ return value; }
,没有别的
编译完成后,c ++程序的原始源代码将被完全丢弃,并且永远不会再次使用。
您可以使用-E标志来查看编译器看到的内容,这将使其输出预处理的源。