【问题标题】:Difference between macro and preprocessor宏和预处理器之间的区别
【发布时间】:2012-08-11 02:11:20
【问题描述】:

据我了解,#define blah 8 是一个宏。而# 是预处理器指令。

我们可以说#include、#if、#ifdef 等吗?也是宏,还是它们被称为别的东西?还是宏只是用于#define 语句的术语?

如果我错了,请纠正我。

【问题讨论】:

    标签: c c-preprocessor


    【解决方案1】:

    预处理器在将源文件交给编译器之前对其进行修改。

    预处理器视为在编译器之前运行的程序。

    预处理器指令类似于预处理器程序命令。C中一些常见的预处理器指令是

    1. #include <header name> - 指示预处理器将给定文件的文本粘贴到当前文件。
    2. #if <value> - 检查值是否为真,如果是,它将包含代码直到#endif
    3. #define - 用于定义常量和创建

    是某些代码片段的名称。因此,无论在何处使用该名称,它都会被预处理程序的代码片段替换 >。

    例如:

    #define BUFFER_SIZE 100
    在您的代码中,无论您使用 BUFFER_SIZE,它都会被替换为 100
    int a=BUFFER_SIZE;
    a 在这里变成 100

    C 中还有很多预定义的宏,例如__DATE____TIME__ 等。

    【讨论】:

      【解决方案2】:

      Preporcessor:进行预处理(文件包含、宏扩展、条件编译)的程序。

      宏:由 #define 预处理器指令定义的词,计算结果为其他表达式。

      预处理器指令:一个特殊的#-keyword,被预处理器识别。

      【讨论】:

        【解决方案3】:

        #include#if等是预处理器的特性。

        #define blah 8
        

        是一个预处理指令并声明一个名为blah的新宏。

        • 宏是#define 语句的结果。
        • 预处理器是 C 的一个特性。

        【讨论】:

          【解决方案4】:

          # 开头的行是预处理指令。它们是告诉预处理器做某事的指令。

          #include#if#ifdef#ifndef#else#elif#endif#define#undef#error#error、@9876543332 @ 都是预处理指令。 (只包含#的行也是预处理指令,但没有作用。)

          #define blah 8 是预处理指令,它不是宏。 blah 是一个宏。这个#define 预处理指令将名为blah 的宏定义为被标记8 替换的类对象宏。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-04-17
            • 1970-01-01
            • 2011-05-14
            • 2011-07-07
            • 1970-01-01
            • 2012-09-28
            • 1970-01-01
            相关资源
            最近更新 更多