这是正常工作,但它确实产生了一个警告:
extern int const SCREEN_WIDTH;
我需要担心这样做吗?它的功能完全符合预期。
我得到的警告是:
SCREEN_WIDTH initialized and declared extern
和
extern variable has an initializer
我只是浏览了一下gcc源文件。在gcc.c中,我发现了类似这样的东西
extern int main (int, char **);
int
main (int argc, char **argv)
{
现在我怀疑extern是不是要告诉编译器,特定的函数不在这个文件中,而是会在项目的其他地方找到。但是在这里,main的定义紧跟在extern声明之后。那么extern声明服务的目的是什么呢?
在这个特定的例子中,extern的行为看起来就像我们在汇编中使用的export一样,我们将一个特定的符号导出到模块之外
有什么想法吗?
下面是几个关于typedef修改的实验,我不能理解2行和6行。为什么2和5给出了不同的结果?请给我一些澄清。
typedef long _long;
extern _long tl; //1 Fine...OK
extern _long int tli; //2 extraneous `int' ignored...??
extern int _long til; //3 `_long' does not name a type...OK
extern long l; //4 Fine...OK
extern long int l
现在,我读了Stephen关于C++的书,了解了extern关键字及其用法。所以我有个问题。我可以键入"extern int var a;“而不包括定义和初始化这个'a‘变量的文件吗?
#include <iostream>
//#include "vars.h" Not including the file with 'a' variable
using namespace std;
extern int a;
int main()
{
cout << a << endl;
re
当我在读的答案时
其中一个用户这样回答
extern int a; // not a definition
extern int a = 42; // definition
我认为两者都不是定义,而是声明。我在想,两个语句都说变量是在函数外部定义的,我们必须使用extern关键字才能使用它。这是他的一个错误,还是真的是一个定义?我知道
extern int a; // variable is already defined but its outside the function
extern int a=42 ; //I guess a variable is as