取消定义类似函数的宏

发布于 2024-09-14 21:24:43 字数 231 浏览 3 评论 0原文

C/C++ 中有两种类型的宏:

 #define ABC   /* usual */

und

 #define FUNC(a)  /*function-like*/

但是我如何取消它们的定义呢?

更新:那么取消定义“类常量宏”和“类函数宏”之间没有区别吗?

In the C/C++ there are 2 types of macro:

 #define ABC   /* usual */

und

 #define FUNC(a)  /*function-like*/

But how can I undefine them?

Update: So there is no difference between undefing "constant-like macro" and "function-like macro"?

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

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

发布评论

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

评论(2

冧九 2024-09-21 21:24:43
#undef ABC
#undef FUNC

#undef“取消”之前的#define。效果就好像您以前从未有过针对特定标识符的#define。请注意,#define 不考虑范围,因此最好仅在需要时使用它们。

另请注意,一个宏标识符使用“通常”语法而另一个宏标识符使用“类似函数”语法并不重要。 #define ABC#define ABC(A) 都定义了一个名为 ABC 的宏。如果两者都有,而无需 #undefing 其中之一,则最新的一个将“覆盖”另一个。 (如果发生这种情况,某些编译器可能会发出警告。)

#undef ABC
#undef FUNC

#undef "cancels" out a previous #define. The effect is as though you never had a previous #define for a particular identifier. Do note that #defines do not respect scope, so it's best to use them only when you need to.

Also note that it doesn't matter if one macro identifier uses the "usual" syntax while another uses a "function-like" syntax. #define ABC and #define ABC(A) both define a macro named ABC. If you have both, without #undefing one of them, the latest one "overrides" the other. (Some compilers may emit a warning if this happens.)

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