是一个定义常量的宏吗?

时间:2011-09-03 01:21:14

标签: c++ c macros c-preprocessor ansi

  

可能重复:
  "static const" vs "#define" in c

宏是代号的片段,它已被赋予名称。每当使用该名称时,它将被宏的内容替换。 (无需内存)

因此,人们将其用作定义常量的方法而不是语法:const int num = 1;

这是一个好习惯吗? MACRO是否还要为#include#define做另外的事情?

2 个答案:

答案 0 :(得分:2)

除了定义常量之外,还可以使用宏。如今,宏观用法通常不受欢迎,除非绝对没有其他选择。

使用遍布宏的宏来调试复杂代码会让您不止一次头疼。

来自GCC docs

  

宏是代号的片段,它已被赋予名称。每当   使用该名称,它将被宏的内容替换。

答案 1 :(得分:2)

出于若干原因,通常优选Consts。例如,它们是一种语言结构(不是预处理器处理的外部值)。此外,它们包含类型信息,因此它们可以帮助编译器检测编译错误等。在大多数情况下,您可以说它们是等效的,但const“在语义上更正确”。