预定义宏表:
__LINE__ 当前程序行的行号,表示为十进制整型常量
__FILE__ 当前源文件名,表示字符串型常量
__DATE__转换的日历日期,表示为Mmm dd yyyy 形式的字符串常量,Mmm是由asctime产生的。
TIME 转换的时间,表示"hh:mm:ss"形式的字符串型常量,是有asctime产生的。
Clang常用编译命令:
1. 无选项编译链接
用法:#clang hello.c
作用:将hello.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。编译成功后可以看到生成了一个a.out的文件。在命令行输入./a.out 执行程序。./表示在当前目录,a.out为可执行程序文件名。
2. 选项 -o
用法:#clang hello.c -o hello
作用:将hello.c预处理、汇编、编译并链接形成可执行文件hello.c。-o选项用来指定输出文件的文件名。输入./hello执行程序。
3. 选项 -E
用法:#clang -E hello.c -o hello.i
作用:将hello.c预处理输出hello.i文件。
4. 选项 -S
用法:#clang -S hello.i
作用:将预处理输出文件hello.i汇编成hello.s文件。
5. 选项 -c
用法:#clang -c hello.s
作用:将汇编输出文件hello.s编译输出hello.o文件。
6. 无选项链接
用法:#clang hello.o -o hello
作用:将编译输出文件hello.o链接成最终可执行文件hello。输入./hello执行程序。
如果想直接输入hello就运行,需要把hello复制到目录/usr/bin下
7. 选项-O
用法:#clang -O1 hello.c -o hello
作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。输入./hello执行程序。
8.编译使用C++ std库的程序
用法:#clang hello.cpp -o hello -l std c++ 作用:将hello.cpp编译链接成test可执行文件。-l std c++指定链接std c++库。
9. 分别编译各个源文件,之后对编译后输出的目标文件链接。 用法:
#clang -c hi.c // 将hi.c编译成hi.o
#clang -c hello.c // 将hello.c编译成hello.o