A_YT
2015-08-18 02:26
采纳率: 38.5%
浏览 2.0k

全局变量的定义和使用

我在changshu.h头文件中定义了几个全局变量,在其他cpp文件中也include了,运行时出现了already defined in main.obj错误。该怎么解决?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • Co_priest 2015-08-18 03:30
    已采纳

    为避免多次包含同一个头文件,一般会在头文件加上独一无二的宏定义,即同一个项目里只出现一次的宏,一般就用__文件名_H__,
    格式如下:
    #ifndef FILENAME_H
    #define FILENAME_H

    /*中间是头文件的内容*/

    #endif

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • feiyingmingren 2015-08-18 02:36

    加头文件卫士
    #include CHANGSHU_H
    #define CHANGSHU_H

    #endif

    评论
    解决 无用
    打赏 举报
  • fefe82 2015-08-18 03:17

    你应该在头文件中声明变量:
    extern int a;

    然后仅在一个 cpp 里定义变量:
    int a;

    在头文件里定义变量会导致在每个包含了这个头文件的 cpp 里,这个变量都会被定义一次,从而引起重定义的错误。

    评论
    解决 无用
    打赏 举报
  • q345082603 2015-08-19 06:13

    在changshu.cpp里定义全局变量int a,在需要使用的其他类.cpp里extern int a;(前提当然要包含changshu.h)

    评论
    解决 无用
    打赏 举报
  • 大松哥 2015-08-19 06:31

    书籍应该看仔细呀,这类问题书籍都会提及到的。其余文件引用需要extern

    评论
    解决 无用
    打赏 举报
  • lingzhu111 2015-08-21 10:21

    全局变量 最好不要定义在头文件

    extern

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题