给定这两个C程序
函数原型和声明
after.c
#include<stdio.h>
void hi();
int main(){
hi();
return 0;
}
void hi(){
puts("hello world");
}
仅函数定义
before.c
#include<stdio.h>
void hi(){
puts("hello world");
}
int main(){
hi();
return 0;
}
编译命令如下:
cc -oafter after.c
cc -obefore before.c
md5sum *
efac7a08389095a718b7fc9e163719ca after
41e81298acdf96091b4a9326a4557b0c after.c
d5b87a14479e764f1c8a8669182773a1 before
924ec57ea6ef7ee306edfd0ec7f5fd54 before.c
可以看到,这将产生不同的二进制文件。为什么会这样?before和after有什么不同之处?是否存在速度差异?