即使在.h文件中指定了类型,为什么会出现这样的警告

问题描述 投票:0回答:1

有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

编译时没有任何警告。有什么区别?

c include static-libraries c-libraries
1个回答
0
投票

您不能从函数外部分配给变量。什么时候会调用这样的代码?

编译器将其解释为

a
变量的定义,从旧时代的 C 开始,缺失类型默认为
int

© www.soinside.com 2019 - 2024. All rights reserved.