#pragma message("this is message") #pragma message只能打印字符串,如果想打印任何宏定义可使用: #define PRINT_MACRO_HELPER(x) #x #define PRINT_MACRO(x) #x ...
背景 总所周知,代码量稍微大一点的C C 项目的一些宏定义都会比较复杂,有时候会嵌套多个 if else判断分支和一堆 ifdef undef让你单看代码的话很难判断出宏定义的具体内容。 如果有一种机制能够帮助我们在构建期间打印出宏的实际内容,就能帮我们更快地捋清楚代码逻辑。 message pragma 如message pragma定义所说,可以使用它来打印一个字面意义的字符串: 而我们知道宏 ...
2020-12-20 17:12 0 935 推荐指数:
#pragma message("this is message") #pragma message只能打印字符串,如果想打印任何宏定义可使用: #define PRINT_MACRO_HELPER(x) #x #define PRINT_MACRO(x) #x ...
Linux下的GCC编译器内部预宏定义 经常在一些开源的程序中看到一些宏定义,却看不到这些宏定义是在哪些地方定义的,其实有些宏定义是交叉编译工具GCC预定义好的,比如:__GNUC__,__ELF__等等,怎么看到这些宏定义呢,可以采用以下命令来查看: gcc -E -dM ...
编译调试代码时,总是遇到要使用编译器预编译宏进行跨平台编译. gcc -E -dM -</dev/null 编译器版本 Thread model: posix gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11) 结果 ...
开发过程中我们常常需要使用宏定义。。 为了尽可能多的使用GCC为我们提供的特性,首先我们需要知道gcc提供了那些特性。。。 gcc -dM -E - < /dev/null 没错,就这么一句话就可以搞定了。。。 ...
示例代码(文件compile_macro_test.c): #include <stdio.h> int main(){ int a = 0;#ifdef ...
目录 1 预处理阶段:预处理器(cpp) 2 编译阶段:编译器(ccl) 3 汇编阶段:汇编器(as) 4 链接阶段:链接器(ld) hello.c 1 预处理阶段:预处理器(cpp) 2 编译阶段:编译器(ccl) 3 汇编阶段 ...
今天在看Linux系统编程这本书的代码的时候看到了__GNUC__,不太清楚这个宏所以去查了一下,以此记录。GNU C预定义了一系列的宏,这些宏都是以双下划线开始的,这里只讲一下__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__,其他GNU C的预定义宏 ...
下面是对Gcc的内置宏定义的解释: https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html https://github.com/gcc-mirror/gcc/blob/master/gcc/config ...