【问题标题】:What do you call "#" in C and C++?您在 C 和 C++ 中如何称呼“#”?
【发布时间】:2021-03-09 14:21:22
【问题描述】:

我只是好奇,你在 C/C++ 中如何称呼#

例如,#if。是不是叫做“hashtag if”?

【问题讨论】:

  • 在 C 或 C++ 中没有专门的名称。根据互联网,此符号通常称为“Octothorpe、数字、磅、尖或哈希”
  • “磅”是我听到的最常见的发音,用于在 C 语境中表达“#”。 IE。 #define -> “磅定义”
  • 这种意见究竟是如何建立的?在语言语法中有几个正式和规范的名称。这个问题可以用事实和引用来回答。重新开始投票。
  • “磅”在美国,“hash”在很多其他地方(肯定是在英国),“hastag”从不
  • “Hashtag”是一个非常新的术语,可以追溯到 2007 年左右。C 和 C++ 都比这更古老(甚至 C# 也更古老)。

标签: c++ c c-preprocessor


【解决方案1】:

源代码中以#if 开头的行现在称为preprocessor directive。在The C Programming Language ("K&R")1 一书中,它被称为“编译器控制线”。

符号# 本身似乎没有特殊名称。例如,documentation for the gcc compiler 只是将其称为 '#':

预处理指令是程序中以 '#'。 ‘#’前后允许有空格。 ‘#’是 后跟一个标识符,指令名称。它指定了 要执行的操作。指令通常称为“#name” 其中 name 是指令名称。例如,“#define”是 定义宏的指令。

K&R 书也只是称它为“#”:

以 # 开头的行与此预处理器进行通信。


1 丹尼斯·里奇,布赖恩·克尼汉; C 编程语言,第 1 版(1978 年);页。 207

【讨论】:

  • 还有#运算符,这是语言中符号的第二次使用。非正式地/俚语是“字符串化运算符”或类似的。
【解决方案2】:

C 标准没有按名称引用 #。在 C 2018 6.4.6 中,它被列为标点符号之一。它在 C 中具有三种用途。在讨论其在预处理器指令中的使用时,标准将其称为“# 处理令牌”(6.10)。在讨论其用于“字符串化”操作时,标准将其称为“# 运算符”(6.10.3.2)。当然,它可以用作字符常量 ('#') 或字符串文字中的字符。

【讨论】:

  • 两个## 构成## 运算符,“pp 令牌连接”。
【解决方案3】:

'#' 称为预处理指令,'#' 后面的单词称为预处理指令。预处理器是在编译之前执行的程序。每个预处理指令必须在自己的行上。 示例 -

#define MAX 50
#if CONDITION

【讨论】:

    猜你喜欢
    • 2014-06-12
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 2016-12-02
    相关资源
    最近更新 更多