#define
指令的作用是什么?
最佳答案
#define
用于在 C 和 C++ 中创建宏。您可以在 C preprocessor documentation 中阅读更多相关信息.简单的回答是它做了一些事情:
简单的宏 - 基本上只是文本替换。编译时间常量就是一个很好的例子:
#define SOME_CONSTANT 12
只需将出现在代码中的文本
SOME_CONSTANT
替换为12
。这种宏通常用于提供代码块的条件编译。例如,项目中的每个源文件都可能包含一个 header ,其中包含项目的选项列表:#define OPTION_1 #define OPTION_2 #undef OPTION_3
然后项目中的代码块将被匹配的
#ifdef
/#endif#
block 包裹起来,以在完成的项目中启用和禁用这些选项。使用-D
gcc 标志会提供类似的行为。然而,对于这种方法是否真的是为应用程序提供配置的好方法,存在强烈的意见。带参数的宏 - 允许您制作可以接受参数并对其进行操作的“类似函数”的宏。例如:
#define SQUARE(x) ((x) * (x))
将返回参数的平方作为结果;注意潜在的操作顺序或副作用问题!以下示例:
int x = SQUARE(3); // becomes int x = ((3) * (3));
会正常工作,但像这样:
int y = SQUARE(f()); // becomes int y = ((f()) * (f()));
将调用
f()
两次,甚至更糟:int z = SQUARE(x++); // becomes int z = ((x++) * (x++));
导致未定义的行为!
使用一些工具,带参数的宏也可以是 variadic ,可以派上用场。
正如下面评论中提到的,过度使用宏,或者开发过于复杂或困惑的宏被许多人认为是糟糕的风格——一如既往,将代码的可读性、可维护性和可调试性置于“聪明”的技术技巧之上.
关于c++ - C++ 中#define 指令的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2806347/