有2个文件libtest.h和libtest.c
libtest.h
int a;
libtest.c
#include "libtest.h"
a = 10;
当我编译libtest.c时
cc -c libtest.c
libtest.o 已生成,但我收到此警告。原因是什么?
libtest.c:3:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
a = 10;
^
如果我做同样的事情,但是在 libtest.c 中的某个函数内
#include "libtest.h"
int foo()
{
a = 10;
return(0);
}
cc -c libtest.c
编译时没有任何警告。有什么区别?
您不能从函数外部分配给变量。什么时候会调用这样的代码?
编译器将其解释为
a
变量的定义,从旧时代的 C 开始,缺失类型默认为 int
。