代码之家  ›  专栏  ›  技术社区  ›  Scott

符号常量:它们是如何存储的,它们的类型是什么?

  •  1
  • Scott  · 技术社区  · 16 年前

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

    1 回复  |  直到 16 年前
        1
  •  6
  •   Community Mohan Dere    9 年前

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

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

    #define FIVE 5
    
    int a = FIVE;
    

    编译器将只看到:

    int a = 5;
    

    符号 FIVE 从编译器看到的源文件中删除。编译器只能运行预处理器;在gcc中,它是 -E 在MSVC中 /E or /P . 使用这样的选项,您可以通过预处理器运行源代码,以查看它是如何更改的。

    推荐文章