jpm*_*los 1 c linker gcc header-files
在谈到irc.freenode.net上## C的链接之后,我去测试了一些我学到的概念,并提出了这种情况.
我有这个名为main.c的文件:
int main(void) {
func();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个名为test.c的文件:
#include <stdio.h>
void func(void) {
printf("Hello.\n");
}
Run Code Online (Sandbox Code Playgroud)
没有test.h文件.
我这样做:
$ gcc -c main.c
$ gcc -c test.c
$ gcc main.o test.o
$ ./a.out
Hello.
$
Run Code Online (Sandbox Code Playgroud)
这很有效.不应该在第一次调用时抱怨gcc不知道在main.c文件中调用的函数func()吗?我没有包含任何文件及其原型或实现,但gcc可以编译目标代码并生成一个合理的可执行文件.那里发生了什么,我失踪了?
谢谢.
打开一些警告,你会痛苦地意识到这些问题.
> gcc -Wall -c main.c
main.c: In function ‘main’:
main.c:2:5: warning: implicit declaration of function ‘func’
Run Code Online (Sandbox Code Playgroud)
默认情况下,C会假设未知函数.好?可能不是.历史.
也gcc -std=c99
将抛出警告也是如此.
归档时间: |
|
查看次数: |
78 次 |
最近记录: |