gpt4 book ai didi

c++ - 如果你只有一个标识符,#define 会做什么

转载 作者:太空狗 更新时间:2023-10-29 19:37:23 26 4
gpt4 key购买 nike

通常#define 用于定义常量或宏。但是,按以下方式使用#define 是有效的代码。

#define MAX // does this do anything?
#define MAX 10 // I know how to treat this.

所以,如果我#define MAX 10,我知道我的预处理器用 10 替换了 MAX 的所有实例。如果有人单独使用 #define MAX 但没有后续替换值,它是有效的。这实际上有什么作用吗?

我问的原因是我正在用 C++ 为 C 编写一个编译器,并且需要处理预处理器指令,但是我无法确定发生这种情况时是否有任何我需要的功能,或者我是否只是一旦我的预处理完成,请忽略它。

我的第一直觉是,这会在我的符号表中创建一个没有名为 MAX 值的符号,但它也有可能什么都不做。

作为一个补充问题,我知道这是一种不好的形式,但我真的很好奇。实际代码中是否存在会使用此类内容的情况?

谢谢,宾克斯

最佳答案

一个典型的例子是 header guards:

#ifndef MYHEADER
#define MYHEADER
...
#endif

您可以测试是否使用 #ifdef/ifndef 定义了某些内容。

关于c++ - 如果你只有一个标识符,#define 会做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35301213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com