Skip to content
On this page

C语言宏定义


标签:clang/basic  

宏函数

c
#define SWAP(x, y)  \
  ((x) = (x) ^ (y), \
  (y) = (x) ^ (y),  \
  (x) = (x) ^ (y));
  • 利用宏在编译时候的替换,可以实现类似函数的功能
  • 编写宏函数,尽量多使用括号,因为宏是进行直接替换的,不习惯用括号的话,小则编译语法错误,大则代码逻辑错误
  • 区分 C++ 的内联函数

宏定义用于调试

cpp
#include <stdio.h>
#define NUMBER  3

int main() {
  int a = 10;
#ifdef DEBUG
  printf("我是一个程序猿, 我不会爬树...\n");
#endif
  for(int i = 0; i < NUMBER; ++i) {
    printf("hello, GCC!!!\n");
  }
  return 0;
}
  • 👆🏻️上面的代码中使用了 DEBUG 宏,如果这个宏没有被定义,第 7 行 printf 不会被输出
  • 而且你也不需要直接修改代码的方式去定义 DEBUG,在编译的时候加上 -DDEBUG 参数即可,例如 gcc test.c -DDEBUG -o app,此时运行程序,会输出所有 debug 消息

Last updated: