【问题标题】:#define MY_INT VS const int MY_INT [duplicate]#define MY_INT VS const int MY_INT [重复]
【发布时间】:2012-08-20 20:41:08
【问题描述】:

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

当我这样做时:

#define WEEKDAYS 7

还有那个:

const int WEEKDAYS = 7;

它们之间有什么区别吗?似乎两者都做同样的事情 - 为代码中的未来使用设置一个常量值。

【问题讨论】:

  • 您已将其标记为 C 和 C++。不同语言的答案有些不同。
  • 更容易说 NEVER 标记 C 和 C++ 的问题。
  • @JeffMercado 这会更容易,但这是错误的。 :) 最简单的例子是一个专门询问 C 和 C++ 之间差异之一的问题(我记得最近有一个问题问为什么 sizeof('a') 在 C 中与 sizeof(char) 不同,但在 C++ 中却没有)
  • @hvd:关于这两种语言之间的具体差异的问题是什么。我真正的意思是在一个不是专门寻找语言比较的问题上用两个标签进行标记。但无论如何,不​​管我们喜不喜欢,它仍然会发生。
  • 同意。 FWIW,现在作为 C 问题的副本已关闭,但由于 ron 删除了 C 标记(谢谢),stackoverflow.com/questions/1637332/static-const-vs-define(链接在另一个问题中)可能在此处提及。

标签: c++ constants c-preprocessor


【解决方案1】:
#define WEEKDAYS 7

void f() {
    int WEEKDAYS = 3; // error
}

const int WEEKDAYS_CONST = 7;

void g() {
    int WEEKDAYS_CONST = 3; // okay: local scope for WEEKDAYS_CONST
}

【讨论】:

    【解决方案2】:
    #define WEEKDAYS 7
    

    将源文件中出现的所有单词 WEEKDAYS 替换为数字 7。

    const int WEEKDAYS = 7;
    

    定义一个由 7 表示的实际常量,您可以在代码中访问该常量。

    【讨论】:

      猜你喜欢
      • 2021-02-14
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多