c - 需要帮助理解 C 中的特定定义指令

标签 c syntax macros c-preprocessor

我是一名计算机科学学生,正在学习 C。我有一个作业,其中老师给了我们一个 .h 和两个 .c 文件,其中包含需要我们完成才能使函数正常工作的代码段。

在头文件中,他有以下#define 语句:

# ifndef LT
# define LT(A, B) ((A) < (B))
# endif

# ifndef EQ
# define EQ(A, B) ((A) == (B))
# endif

对于第一个定义,我知道 LT 是“名称”,但我不明白右侧的语法在做什么。与第二个相同。

在我看来,LT 是两个变量 A 和 B 的比较,它检查 A 是否大于 B。

有人可以帮助我理解这一点吗

最佳答案

这些是宏。

如果你的c代码中有

if(LT(xx, yy))
{
   printf("xx is less than yy\n");
}

然后在编译时代码更改为

if((xx) < (yy))
{
   printf("xx is less than yy\n");
}

这是通过预处理器将它看到的#define 的东西更改为其内容来完成的

关于c - 需要帮助理解 C 中的特定定义指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36656053/

相关文章:

c - gcc 检查文件是否是主文件 (#if __BASE_FILE__ == __FILE__)

c++ - 为什么很多cache.h文件中使用 '#define alloc_nr(x) (((x)+16)*3/2)'宏?

c - int 指针转换为 void 指针,然后转换为 double 指针

c - 通过指针反转顺序

python - 无效语法指向 python 中的 "return"

java - arraylist 可以用返回 arraylist 的方法初始化吗?

JSON JQ 如果没有 else

rust - 如何在程序宏生成的代码中创建卫生标识符?

c - 汇编维吉尼亚密码程序

c++ - 如何更改条件编译禁用的代码的字体或颜色设置?