./ 文件名 表示在当前目录执行某文件
linux系统中0代表成功,非0代表失败
gcc编译器
gcc是一种翻译器,将高级语言翻译成机器指令(翻译组织)
创建文件使用gcc指令时要加后缀.c就表示为c语言
gcc -o =output输出
gcc -o 输出文件名 输入文件名
输出文件为一个新建文件 输入文件为一个待翻译或执行的文件
即将c输出成机器指令
gcc -v 打印信息
显示调用的组织
需要调用多步
gcc-S 后跟- o 大写的S 将.c文件先翻译成.s(汇编)
gcc -c 将.s文件变成.o (目标文件)
gcc-o 将.o变为可执行文件
事实直接用gcc -o就自动执行前几步命令
gcc -E 显示预处理文件 (.i为预处理文件)
C的预处理
#include <>(尖括号一般从系统的环境变量种中寻找)“”(双引号一般是自己定义 的)尖括号的从文件只从系统库中找,双引号的是先从系统中找再从当前目录寻找文件
gcc -I跟查找头文件的目录 用来解决预处理中not find 错误
条件编译 #ifdef #else #endif
比如在工程开发调试时需要使用_FILE_来看所在文件名,但是发行版本又不能带有
如下代码。如果在预处理中定义了ABC则显示文件名,否则不显示
#include<stdio.h>
int main()
{
#ifdef ABC
printf("===%s===",_FILE_);
#endif
printf("hello world!");
return 0;
}
gcc-D等价于在编译之前加入宏定义
如 gcc-DABC=#define ABC
预定义宏(系统预定义,由下划线组成)
FUNCTION 函数名
LINE 行号
FILE 文件名
显示当时执行这条语句所在的函数名,第几行和所在文件名
宏展开下的#、##使用
# 字符串化 如defineABC(x) #x
#include <stdio. h>
int main()
{
printf(ABC(ab)); // ABC(ab)等效于 “ab”