但是不知道变量的声明是个什么东西,int a;算声明还是定义呢?
我用2个cpp包含下面这个点h文件
int a; //重定义
int b = 1; //重定义
static int c; //可以
上面的int a,int b =1;和static int c不一样是定义吗?
把变量声明写在.h文件 到底要怎么写呢?
6 个解决方案
#1
int a;算声明还是定义呢? --》定义,因为定义会分配内存。
上面的int a,int b =1;和static int c不一样是定义吗? --》都是定义,作用域也一样。
声明用extern.如extern int a;
然后在你使用a的.cpp or .c中define它。
上面的int a,int b =1;和static int c不一样是定义吗? --》都是定义,作用域也一样。
声明用extern.如extern int a;
然后在你使用a的.cpp or .c中define它。
#2
extern int a;
extern int b;
要避免多个文件互相包含,要用#ifndef.. #define ..#endif
extern int b;
要避免多个文件互相包含,要用#ifndef.. #define ..#endif
#3
不是define 是include吧?
#4
要是a,b没有在cpp里定义过,在 .h里直接extern int a;可以否?
还是只有定义过的变量才能在头文件里extern声明呢?
#5
static int c; 虽然是定义, 但是它是内部链接的, 可以写在 .h 里.
#6
thank你们
#1
int a;算声明还是定义呢? --》定义,因为定义会分配内存。
上面的int a,int b =1;和static int c不一样是定义吗? --》都是定义,作用域也一样。
声明用extern.如extern int a;
然后在你使用a的.cpp or .c中define它。
上面的int a,int b =1;和static int c不一样是定义吗? --》都是定义,作用域也一样。
声明用extern.如extern int a;
然后在你使用a的.cpp or .c中define它。
#2
extern int a;
extern int b;
要避免多个文件互相包含,要用#ifndef.. #define ..#endif
extern int b;
要避免多个文件互相包含,要用#ifndef.. #define ..#endif
#3
不是define 是include吧?
#4
要是a,b没有在cpp里定义过,在 .h里直接extern int a;可以否?
还是只有定义过的变量才能在头文件里extern声明呢?
#5
static int c; 虽然是定义, 但是它是内部链接的, 可以写在 .h 里.
#6
thank你们