0

我有两个不相关的问题:

  1. 是否可以#define用来定义数字以外的东西?(例如扩展的 ASCII 字符)。

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

4

2 回答 2

0

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

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

至于第二个问题,通常的做法是在整个 C 代码中使用预处理器指令来完成您提到的事情:有条件地包括/排除代码,在main其他地方。为了清楚起见,有时我会在使用#define它们的位置附近使用常量。

于 2012-08-22T23:42:02.533 回答
0

您不仅可以#define 字符串,还可以#define 代码。尽管 C++ 的创建者不赞成使用预处理器。

我认为 main() 对于特定于操作系统的代码来说太高了。我会尝试制作包装任何操作系统特定代码的函数/类。放置操作系统特定代码的位置越低越好。

于 2012-08-22T23:47:24.950 回答