运行环境
程序执行的过程:
. 程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完 成。在独立的环境中,程序的载入必须 由手工安排,也可能是通过可执行代码置入只读内存来完成。
. 程序的执行便开始。接着便调用main函数。
. 开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack), 存储函数的局部变量和返回地址。程序同 时也可以使用静态(static)内 存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值。
. 终止程序。正常终止main函数;也有可能是意外终止。
二、预处理详解
预定义符号
__FILE__ //进行编译的源文件
__LINE__ //文件当前的行号
__DATE__ //文件被编译的日期
__TIME__ //文件被编译的时间
__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义
这些预定义符号都是语言内置的;
举个栗子:
#include<stdio.h>
int main()
{
printf("file:%s line:%d\n", __FILE__, __LINE__);
return 0;
}
#define
#define 定义标识符
语法:
#define name stuff
stuff这里可以是一段表达式,也可以是数字或字母;
可以用一段代码举例:
#include<stdio.h>
#define CASE break;case
int main() {
int x = 0;
switch (x) {
case 1:
break;
CASE 2:
CASE 3 :
CASE 4:
}
return;
}
有一个在萌新时期都会有的一个困惑:
在define定义标识符的时候,要不要在最后加上 ; ?
例如:
#define MAX 1000;
#define MAX 1000
其实这里面大有讲究,可以看一下下面这段代码:
#include<stdio.h>
#define MAX 1000;
int main() {
int max = 0;
max = 1000;
if (max == MAX) {
printf("1");
}
else {
printf("2");
}
return 0;
}
下面是宏的申明方式:
#define name( parament-list ) stuff 其中的 parament-list 是一个由逗号隔开的符号表,它们可能出现在 stuff中。
注意: 参数列表的左括号必须与name紧邻。
如果两者之间有任何空白存在,参数列表就会被解释为stuff的一部分。