Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 可以将Unfine设置为变量吗?_Variables_Makefile_Preprocessor - Fatal编程技术网

Variables 可以将Unfine设置为变量吗?

Variables 可以将Unfine设置为变量吗?,variables,makefile,preprocessor,Variables,Makefile,Preprocessor,我在一个嵌入式系统(RTXC)中工作,需要禁用通过#define命令启用的调试器功能。但是,当我将#define更改为undefine时,编译会正常进行,但是当链接器运行时,它会遇到一个错误,该错误与不属于调试代码的符号有关(该错误应该由未定义的调试器变量处理)。Make是否有办法确保预处理器变量未定义或未定义?否。您需要修复代码中的错误 更具体地说,有些东西引用了ifdef之外的调试方面的东西。Make在那里帮不了你 另一种可能性是,您有一个.o或从以前的构建中遗留下来的东西;您可能希望尝试清

我在一个嵌入式系统(RTXC)中工作,需要禁用通过#define命令启用的调试器功能。但是,当我将#define更改为undefine时,编译会正常进行,但是当链接器运行时,它会遇到一个错误,该错误与不属于调试代码的符号有关(该错误应该由未定义的调试器变量处理)。Make是否有办法确保预处理器变量未定义或未定义?

否。您需要修复代码中的错误

更具体地说,有些东西引用了ifdef之外的调试方面的东西。Make在那里帮不了你


另一种可能性是,您有一个.o或从以前的构建中遗留下来的东西;您可能希望尝试清理生成树。

您的问题的答案是否定的,Make不能绝对阻止变量由代码中的#define表达式定义


你似乎有个难以捉摸的问题。它可能是makefile中的一个bug、一个拼写错误的指令、一个错误的宏(如果您不介意重言式的话)或者一些琐碎的东西。我建议烧毁森林:把所有东西都砍掉,直到问题停止,然后看看它藏在哪里。如果您进入HelloWorld,问题仍然存在,请告诉我们。

请编辑这些标记,“make”、“define”、“undef”不是好的SO标记。@Amr:我同意define和under,但make是一个好的SO标记,因为它引用了特定的工具。不幸的是,我已经完成了这两个标记,链接问题仍然存在。我检查了变量的每个用法,并保证它们都包含在#ifdef块中,我还确保项目生成的最后一个a、o等都从构建目录中清除(和/或新构建)。谢谢你的回复nonetheless@Alex马歇尔:你的编译器没有告诉你不满意的引用来自哪里吗(通常是第一个位置)?你对目标文件或库运行“nm-g”来定位它们了吗?@Jonathan Leffler:我使用的是嵌入式操作系统RTXC。编译器告诉我问题来自一个内核库:librtxc.anm-glibrtxc.a'告诉我引用在rtxcasm.o中。这些库正在从头开始重新编译,CBUG变量尚未定义,但对_isrcnt的引用仍然存在。我已经检查了对isrcnt的所有引用,它们都正确地包含在#ifdef CBUG标记中,因此我看不出有任何理由将任何#isrcnt符号编译到rtxcasm.o对象文件中。顺便说一句,谢谢你的“nm-g”,我不知道