Make 可以取消定义变量吗?

发布于 2024-08-05 22:17:06 字数 180 浏览 2 评论 0原文

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

I'm working in an embedded system (RTXC) where I need to disable the debugger functionality which is enabled through a #define command. However, when I change the #define to undefine, compilation goes off fine, but when the linker runs, it encounters an error about a symbol not existing that belongs to the debug code (which should have been taken care of by the debugger variable not being defined). Is there any way for Make to ensure that a preprocessor variable does not get defined or stays undefined ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

墨落画卷 2024-08-12 22:17:06

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

看来你有一个难以捉摸的问题。它可能是你的 Makefile 中的一个错误、一个拼写错误的指令、一个错误的宏(如果你能原谅这个同义反复的话)或者一些微不足道的东西。我建议烧毁森林:砍掉所有东西,直到问题停止,然后看看它藏在哪里。如果您访问 HelloWorld 但问题仍然存在,请告诉我们。

The answer to your question is no, Make can't absolutely prevent a variable from being defined by, say, a #define expression in the code.

You seem to have an elusive problem. It could be a bug in your Makefiles, a misspelled directive, a bad macro (if you'll pardon the tautology) or something trivial. I'd suggest burning the forest: cut out everything until the problem stops, then see where it was hiding. If you get down to HelloWorld and the problem persists, let us know.

画骨成沙 2024-08-12 22:17:06

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

更具体地说,有一些东西引用了 #ifdef 之外的调试部分。 Make 无法帮助您。

另一种可能性是你有一个 .o 或以前构建留下的东西;您可能想尝试清理构建树。

No. You will need to fix the bug in your code.

More specifically, there is something that is referencing the debug side of things outside of an #ifdef. Make won't be able to help you there.

Another possibility is that you have a .o or something left over from a previous build; you might want to try cleaning the build tree.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文