有些宏是由编译器自动定义的---这些宏会用到由双下划线(__)开始的保留的名字空间。预定义的宏的完整列表可以这样得到,对某个空文件运行带“-dM”选项的GNU预处理器cpp: [root@iZ23i5mx5vxZ ~]# cpp -dM /dev/null #define __DBL_MIN_EXP__ (-1021) #define __FLT_MIN__ 1.17549435e-38F #defin...
1、查看gcc默认的内置宏定义 gcc-dM -E - < /dev/null 或者 gcc-dM -E helloworld.c helloworld.c为用户随意编写的c测试用例,随意拿个c程序就行。 -E 预处理后即停止,不进行编译。预处理后的代码送往标准输出。GCC忽略任何不需要预处理的输入文件。 -dM 告诉预处理器输出有效的宏定义列表(预处理结束时仍...
gcc支持多种硬件平台。 2. gcc的特点 gcc是一个可移植的编译器,支持多种硬件平台。例如ARM、X86等等。
于是我们就需要知道我们当前的GCC到底定义了__GNUC__ 没有,定义的值是多少,于是我们使用如下命令: gcc -dM -E - < /dev/null 输出的内容为(一部分): 我们从这里看到#define __GNUC__ 4 ,这就可以确定源码中,到底走了哪个条件了。 这个讲解,解决查找系统的一些常量,宏定义,在开源项目里面,因为要兼容很...
gcc -dM -E - < /dev/null | grep __STDC_VERSION__ 输出:#define __STDC_VERSION__ 201710L 该宏定义表示我的gcc默认c17标准。 现在的C语言标准有C89、C99、C11、C17和C2x。这些标准的主要区别在于它们引入了哪些新特性,以及它们对现有特性的修改和改进。例如,C99标准引入了一些新的数据类型,如long lon...
gcc main.c test.c-o main-I/home/qq/dm/dm_gcc/header/ image.png (4)-l (小写L) 指定库名 通常动态库静态库名字的格式都是 libxxx.so 或 libxxx.a ,所以这个参数的使用方法是直接加库名 -lxxx ,具体使用方法将在我Linux专栏的另一篇文章《自己动手做动态库与静态库》中详细介绍。
-Aassertion -C -dD -dM -dN -Dmacro[=defn] -E -H -idirafter dir -include file -imacros file -iprefix file -iwithprefix dir -M -MD -MM -MMD -nostdinc -P -Umacro -undef 汇编器选项(Assembler Option) -Wa,option 连接器选项(Linker Option) ...
1. 在使用gcc/g++编译器时,可以通过以下命令打印出编译器预编译的宏。 gcc -dM -E - < /dev/null 2. 在VS IDE中,可以参看http://msdn.microsoft.com/zh-cn/library/b0084kay。 除了预定义宏,编译器还允许在编译时,用户自定义宏: 1. 在使用gcc/g++编译器时,通过添加 -D 选项,添加用户自定义的宏。
gcc -E -dM - </dev/null|grep"STDC_VERSION" 输出结果和 C 标准的对应关系如下: 如果是#define __STDC_VERSION__ 199901L,则默认支持的是 C99 标准; 如果是#define __STDC_VERSION__ 201112L,则默认支持的是 C11 标准; 如果是#define __STDC_VERSION__ 201710L,则默认支持的是 C17 标准; ...
10、se -fno-inline -fno-peephole -fomit-frame-pointer -frerun-cse-after-loop -fschedule-insns -fschedule-insns2 -fstrength-reduce -fthread-jumps -funroll-all-loops -funroll-loops -O -O2 -O3 预处理器选项(Preprocessor Option) -Aassertion -C -dD -dM -dN -Dmacro=defn -E -H -idiraft...