【问题标题】:#define macros for "static" for different contexts#define 宏用于不同上下文的“静态”
【发布时间】:2020-11-04 23:51:01
【问题描述】:

我想在不同的上下文中区分“静态”关键字。这样做的可能缺点是什么

#define common static // class member
#define intern static // linkage

从技术和语义的角度。

【问题讨论】:

  • “在你讨厌你之后会处理这个代码的每个人”是一个有效的缺点吗? #define intern static#define BEGIN { 一样糟糕,只是它的含义更不明显。我建议您习惯正确的关键字,即使您不喜欢它们的外观。
  • 您的唯一目标是尝试实现更多“清晰度”吗?如果是的话,可能会适得其反。它最终会导致您团队中的某个人(可能是您)忘记这些宏的存在,然后代码会变得更加混乱。我认为如果有一种方法可以“禁止”关键字,从而迫使人们使用你的一个宏而不是 static
  • 如果我在自己的项目上工作,这似乎不是问题。是的,禁止一个词的能力很重要,以防你需要强迫人们使用它。但是你必须为静态持续时间上下文定义另一个词。

标签: c++ macros keyword semantics preprocessor


【解决方案1】:

如果你使用这种方法,如果有人不知道这意味着什么,就会真正迷失方向。 如果您真的想使用宏(阅读此内容:https://google.github.io/styleguide/cppguide.html#Preprocessor_Macros),我建议您使用 UPPER_CASE:

#define COMMON static // class member
#define INTERN static // linkage

如果您只使用大写字母,那么看到您的代码的人就会知道这是宏。 Google C++ 风格指南 (https://google.github.io/styleguide/cppguide.html#Macro_Names) 鼓励这种风格。

从技术角度来看,我想说没有区别,因为 C++ 编译器不会看到区别,因为预处理器将您的 commonintern 替换为 static

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2011-09-10
    • 2019-03-17
    相关资源
    最近更新 更多