动态引用头变量c ++

时间:2013-07-14 09:00:15

标签: c++ variables header-files

我知道C ++无法在运行时创建变量。编译时必须声明一切。

我的问题是,如果我有,比方说,10包含带有简单变量名的头文件,我可以通过头文件名或类似的东西动态引用它们。

例如,如果我有两个头文件,一个名为“myVars1.h”,变量为“myVars1name”,另一个名为“myVars2.h”,变量为“myVars2name”,我可以这样做

int fileNum = 1;
string name = ["myVars" + fileNum + "name]; //i wish this worked...

这是否与在运行时创建变量(因此非法)相同?

由于

2 个答案:

答案 0 :(得分:2)

假设这些变量在头文件中声明,并在其他地方定义为全局变量,您可以使用dlsym()获得所需的内容。基本上C / C ++不能在运行时定义变量,但它可以在运行时加载它们。

前提条件:这些变量必须构建到共享库中,例如mylib.so

....
int fileNum = 1;
string name = ["myVars" + fileNum + "name]; //i wish this worked...

void *handle = dlopen("$PATH/mylib.so", RTLD_LAZY);
void *varPtr = dlsym(handle, name);  // Your wish comes true here...
//cast varPtr to its target type.
....

答案 1 :(得分:0)

我认为你应该使用Namespaces