【问题标题】:#define: why uppercase?#define:为什么要大写?
【发布时间】:2013-12-14 16:48:40
【问题描述】:

定义宏时(例如#define BALL)。为什么人们使用大写字母?我可以写类似#define ball 的东西。它不是大写的,但它可以工作。

【问题讨论】:

  • 对宏使用大写是一种命名约定。预处理器可以处理宏名称中的任何大小写(大写、小写、混合)。

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


【解决方案1】:

这是惯例。使阅读和理解代码更容易。这不是必需的,但建议这样做。

【讨论】:

    【解决方案2】:

    为什么要使用_ 来表示长变量名?为什么不将变量命名为a or b,因为它易于理解和调试。

    使用诸如TotalHeight 之类的变量名比简单的i 更有意义。有些人甚至会在数据类型前面加上 Int_TotalHeight 这样的前缀。它易于维护代码。

    为了回答您的问题,人们使用它来加深理解。通常

    1)区分变量名和宏名

     #define MAX 45 // easy to understand, it is a macro
     int max=45;
    

    2) 区分函数和宏。说

     #define MULT(x, y) (x) * (y) 
     int mult(int,int);
    

    【讨论】:

    • 欢迎您@nicael,更具体地说,宏是常量。常量通常用大写表示:)
    【解决方案3】:

    这是今天的另一个问题:Can't figure out this "called object is not a function" C time error。在这种情况下,OP 执行了 #define time (24 * 60 * 60) 并在 time(something) 无法编译时感到惊讶。

    C 中几乎没有任何标准都是大写的,因此通过将宏全部设为大写,可以避免冲突。由于预处理器只是进行令牌替换,因此冲突通常会产生不明显或未检测到的错误。

    【讨论】:

    • 没有碰撞的原因并不是标准没有使用大写。这是因为标准会在这些大写字母前加上 _ 前缀,然后保留它们。
    【解决方案4】:

    这是一种习俗。大写和小写都可以写。

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 2019-11-24
      • 2023-01-22
      • 2014-08-07
      • 2011-04-13
      • 1970-01-01
      • 2011-11-25
      • 2016-08-17
      相关资源
      最近更新 更多