一、inline疑问;二、end(0)疑问;
一、C语言中什么时候用inline,为什么用inline?
二、end(0);包含在哪个头文件里?
int getinput(void);
void printmessage(int counter,int input);
int main(void){
int counter;
int input;
for(counter = 0; counter <= 200; counter++){
input = getinput();
if(input == -1) end(0);
printmessage(counter,input);
}
return 0;
}
int getinput(void){
int input;
printf("Enter an integer, or use -1 to exit: ");
scanf("%d",&input);
return input;
}
void printmessage(int counter, int input){
static int lastnum = 0;
counter++;
printf("For number %d , you entered %d(%d more than last time)\n",counter,input,input - lastnum);
lastnum = input;
}
报警报:
a1.c: In function main:
a1.c:12: warning: implicit declaration of function end
[解决办法]
end(0)不知道是哪个编译器的玩意,无能为力
inline是内联,去查一下就知道
简单地说,编译器编译函数的时候一个函数编译成一块代码,CPU每调用一个函数都要保存正在运行的状态然后跳到要调用的那个函数代码那里,有时函数代码很简单但跳转之前的保存状态却很麻烦,相当于你吃饭花了十块钱来回路上坐车花了一百块一样本末倒置。为了避免这种情况,比较简单的函数使用inline修饰,意为告诉编译器“这个函数你不用专门开辟代码空间,直接嵌入到调用它的地方就可以了”。
内联函数增加了代码的长度,但提高了CPU使用效率。目前主流的编译器都支持智能编译inline,即你拿不准该不该内联就可以写inline,编译器替你判断是否应该内联
[解决办法]
内联函数是为了既保证了源代码的简洁,又没有因函数调用而损失效率。一般针对使用频繁的小函数使用。