gcc 生成中间文件

需求 gcc 如何生成中间文件 解决 预处理 生成 .i 文件。 gcc -E hello.c g++ -E test.cpp -o test.ii # 阻止源文件和头文件中的注释 g++ -E -C test.cpp -o test.ii 编译 生成 .s 文件 gcc -S hello.c g++ -S test.ii g++ -S test.ii -o demo.s g++ -S test.cpp -o test.s # 添加必要注释 g++ -S test.cpp -o test.s -fverbose-asm 汇编 生成 .o 文件 gcc -c hello.c g++ -c test.s g++ -c test.s -o test_obj.o 链接 生成 .out 文件...

2023-04-14 · 1 min · 108 words · RamLife

定义可变参数的函数的宏

需求 在 Linux 平台下运行程序时,需要通过 syslog 打印日志,syslog 本身是可变参数的函数,所以需要一个可变参数的宏来定义在 linux 平台下的函数。 解决 在 C++ 中,可变参数宏的写法是: #define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__), 满足需求的代码如下: #ifdef Q_OS_LINUX #define LOG(priority, format, ...) syslog(priority, format, ## __VA_ARGS__) #else #define LOG(priority, format, ...) #endif 在 C 中,写法是: #define debug(format, ...) fprintf(stderr, fmt, __VA_ARGS__) 在 GCC 中,写法是: #define debug(format, args...) fprintf (stderr, format, args) 参考 不定参数的宏 函数 整理:C/C++可变参数,“## __VA_ARGS__”宏的介绍和使用 c/c++巧用宏计算不定参数个数【不定参数】【宏】【#define】

2023-02-15 · 1 min · 63 words · RamLife