。h头文件怎么写

ask14k 2013-06-11 01:17:53
书上说变量的声明要写在点h文件中,定义写在cpp文件,可以避免被多个文件包含发生重定义错误。
但是不知道变量的声明是个什么东西,int a;算声明还是定义呢?

我用2个cpp包含下面这个点h文件

int a; //重定义
int b = 1; //重定义
static int c; //可以


上面的int a,int b =1;和static int c不一样是定义吗?

把变量声明写在.h文件 到底要怎么写呢?
...全文
167 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ask14k 2013-06-12
  • 打赏
  • 举报
回复
thank你们
www_adintr_com 2013-06-11
  • 打赏
  • 举报
回复
static int c; 虽然是定义, 但是它是内部链接的, 可以写在 .h 里.
ask14k 2013-06-11
  • 打赏
  • 举报
回复
引用 2 楼 luoyz520 的回复:
extern int a; extern int b; 要避免多个文件互相包含,要用#ifndef.. #define ..#endif
要是a,b没有在cpp里定义过,在 .h里直接extern int a;可以否? 还是只有定义过的变量才能在头文件里extern声明呢?
ask14k 2013-06-11
  • 打赏
  • 举报
回复
引用 1 楼 jzp12 的回复:
int a;算声明还是定义呢? --》定义,因为定义会分配内存。 上面的int a,int b =1;和static int c不一样是定义吗? --》都是定义,作用域也一样。 声明用extern.如extern int a; 然后在你使用a的.cpp or .c中define它。
不是define 是include吧?
luoyz520 2013-06-11
  • 打赏
  • 举报
回复
extern int a;
extern int b;

要避免多个文件互相包含,要用#ifndef.. #define ..#endif
jzp12 2013-06-11
  • 打赏
  • 举报
回复
int a;算声明还是定义呢? --》定义,因为定义会分配内存。 上面的int a,int b =1;和static int c不一样是定义吗? --》都是定义,作用域也一样。 声明用extern.如extern int a; 然后在你使用a的.cpp or .c中define它。

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧