预处理器指令语法和礼仪

时间:2012-08-22 23:37:50

标签: c++ c preprocessor-directive

我有两个无关的问题:

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

  2. main()函数中使用预处理程序指令是否合适?我想到这一点的唯一原因是根据正在运行的操作系统执行不同的代码。

2 个答案:

答案 0 :(得分:0)

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

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

至于第二个问题,通常的做法是在整个C代码中使用预处理程序指令来完成你所提到的:在main和其他地方有条件地包括/排除代码。为清楚起见,我偶尔会将#define用于它们将被使用的常数附近。

答案 1 :(得分:0)

你不仅可以#define字符串,还可以#define代码。虽然C ++的创建者对预处理器的使用不满意。

我认为main()对于特定于操作系统的代码来说太高了。我会尝试创建包含任何特定于操作系统的代码的函数/类。您可以放置​​操作系统特定代码越低越好。