12

在下面的代码中,我希望在编译时THE_VERSION_STRING从环境变量的值中获取MY_VERSION

namespace myPluginStrings {
const  char* pluginVendor = "me";
const  char* pluginRequires =  THE_VERSION_STRING;
};

所以如果我输入:

export MY_VERSION="2010.4"

pluginRequires将设置为“2010.4”,即使MY_VERSION在运行时设置为其他值。

更新:(2 月 21 日)感谢大家的帮助。有用。当我使用 Rake 作为构建系统时,我的每个 CFLAGS 都是一个 ruby​​ 变量。此外,这些值需要以引号结尾。因此,我的 gcc 命令行需要如下所示:

gcc file.c -o file -D"PLUGIN_VERSION=\"6.5\"" 

这意味着这是在我的 Rakefile 中:

"-D\"PLUGIN_VERSION=\\\"#{ENV['MY_VERSION']}\\\"\""
4

2 回答 2

18

如果我没记错的话,您可以在编译时将命令行参数-D与 gcc 一起使用为#define一个值。

IE:

$ gcc file.c -o file -D"THE_VERSION_STRING=${THE_VERSION_STRING}"
于 2010-02-19T21:50:42.917 回答
1

在下面的代码中,我希望在编译时从环境变量 MY_VERSION 的值中获取 THE_VERSION_STRING 的值

不,你不能这样。提取环境变量的唯一方法是在运行时使用该getenv()函数。您将需要显式提取值并将其复制到pluginRequires.

如果您想要编译时常量的效果,那么您必须按照Seth的建议在编译器命令行上指定定义。

于 2010-02-19T23:37:10.170 回答