【问题标题】:Symbolic Constants: How are they stored and what are their types?符号常量:它们是如何存储的,它们的类型是什么?
【发布时间】:2009-10-10 22:53:04
【问题描述】:

C++ 允许您使用#define 预处理器指令来定义编译器将在编译前替换的符号常量。我的问题是,编译器通常如何在内部存储这些,它们有数据类型吗?

【问题讨论】:

    标签: compiler-construction preprocessor


    【解决方案1】:

    严格来说,编译器永远不会看到使用#define 预处理器指令声明的常量。这些由预处理器在文本替换的基础上处理。它们没有 C++ 意义上的“类型”,因为预处理器对 C++ 语言语义一无所知。

    预处理器使用简单的文本替换策略来解析宏。例如,在以下代码中:

    #define FIVE 5
    
    int a = FIVE;
    

    编译器只会看到:

    int a = 5;
    

    符号FIVE 从编译器看到的源代码中消失了。你的编译器可以选择只运行预处理器;在 GCC 中是 -E,在 MSVC 中是 /E or /P。使用这样的选项,您可以通过预处理器运行您的源代码以查看它是如何更改的。

    【讨论】:

      猜你喜欢
      • 2017-05-15
      • 2011-10-08
      • 2020-12-12
      • 1970-01-01
      • 2016-12-18
      • 2016-10-24
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多