我在头文件里声明一个变量,然后在Cpp里赋值,怎么不行呢?

我的mfc程序里自定义了一个头文件,里面声明一个变量比如 int a和声明一个函数Init();
然后自定义一个cpp,里面实现函数Init()。在函数体里面给a赋值:a=6;
然后在另一个dialog cpp里TRACE这个值试试,结果说: fatal error LNK1169: 找到一个或多个多重定义的符号,已经在...obj中定义过。反正编辑时不报错,编译链接时报错。怎么回事?
我有很多变量,我希望有一个Init函数,点击按钮时给这些变量赋值,以前是直接写在onclick事件中的,但不想点击一次就重新建立一次这些变量并赋值,感觉不是一个优化的写法。大神们怎么看?

5个回答

你在h文件中写int a;那个是定义不是申明。把整个写到cpp文件中。头文件中写extern int a;

在头文件中定义,会产生重复定义的错误
2种解决方法
1、在源文件定义,头文件声明
2、静态变量 static

sz76211822
qq76211822 言之有理
5 年多之前 回复

头文件不要重复包含,加上#pragma once
如果是全局变量,其他需要用到的地方extern

头文件重复包含了
头文件中加上#pragma once

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐