android ndk学习

c语言第三讲 程序环境和预处理

2021-10-24  本文已影响0人  大旺旺的弟弟小旺旺

程序的两种状态: 编译和链接过程
编译分为四大过程:

代码的两种状态

编译和链接过程

源代码被编译器编译为目标文件,然后给链接器,链接器会将链接的库和目标一起链接为一个可执行文件。

gcc -E test.c -o test.i
-E:完成预处理之后,停止后面的操作
-O:重定义,预编译之后输出的选项
gcc -S test.c -o test.s
-S:在便编译之后停止后面的操作
gcc test.s -o test.o

链接就是将中间文件和库文件生成目标文件的过程。
链接

gcc test.o -o test
./test  //执行
···
## 程序执行的过程
- 程序载入内存中,一般通过操作系统完成,
- 程序开始执行的时候,调用main
- 开始执行代码:程序使用一个运行时堆栈,存储变量和返回地址
- mian执行完成退出

## 预处理
预处理的符号
- __FILE__:编译的源文件
- __LINE__:当前的行号
- __DATE__:编译的日期
- __TIME__:文件编译的时间

可以做如下操作:
```c
printf("line num %d",__LINE__)

标识符

#define MAX 1000  定义一个值
#define i int //起别名
#define p printf("%d",109);
#define name(i) i*i 

举个例子

#sq(x)  x*x
int main(){
  sq(3+1);   //实际3+1*3+1
}

可以理解将后面的原封不动的复制过去。

宏和函数的区别

宏用来执行简单的运算,代码长度较短的。宏的执行速度更快,并且可以是不同的参数类型。但是宏的确定就不是不可以调试,与类型无关,不严谨,并且有优先级问题

条件编译

编译一个程序的时候,需要放弃某个语句

#if
#end if

举例

#define _DEBUG_ 1
#if _DEBUG_
#endif
上一篇下一篇

猜你喜欢

热点阅读