c++ - 预处理器指令语法和礼仪

标签 c++ c preprocessor-directive

我有两个不相关的问题:

  1. 是否可以使用#define来定义除数字之外的其他内容? (例如扩展的 ASCII 字符)。

  2. main() 函数中使用预处理器指令是否被视为良好实践?我认为这样做的唯一原因是根据正在运行的操作系统执行不同的代码。

最佳答案

类似对象的宏(不带参数的#define 宏)只是替换。因此,代码中可能存在的任何内容都可以进行替换,例如文字字符串:#define PROGRAM_NAME "MyProgram"或多行代码块。这是后者的一个无用的例子:

#define INFINITE_PRINTF while (1) \
                        { \
                            printf("looping..."); \
                        }

对于第二个问题,通常的做法是在整个 C 代码中使用预处理器指令来执行您提到的操作:在 main 和其他地方有条件地包含/排除代码。有时,为了清楚起见,我会在将要使用的常量附近使用 #define 来表示常量。

关于c++ - 预处理器指令语法和礼仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12082843/

相关文章:

c++ - c++ primer 是否对 `dynamic_cast` 的使用有问题?

c++ - 使用 std::pairs 数组初始化 std::map 问题(指针错误?)

c - 无限动画正弦波

c - 在 C 中打印链表

c++ - 什么是双重评估,为什么要避免它?

c++ - 预处理器指令是否仅适用于写入它的文件?

c++ - 无法在 C++ 中初始化静态 vector

python - 当由 C++ 线程程序调用的 Python 脚本本身调用时,OpenCV 函数会锁定

c++ - 从某个较大的虚拟地址空间(例如 20GB 以上)分配内存

c - GCC预处理: Leave undefined Conditionals without assuming zero-values