问题描述
- 我在头文件里声明一个变量,然后在Cpp里赋值,怎么不行呢?
-
我的mfc程序里自定义了一个头文件,里面声明一个变量比如 int a和声明一个函数Init();
然后自定义一个cpp,里面实现函数Init()。在函数体里面给a赋值:a=6;
然后在另一个dialog cpp里TRACE这个值试试,结果说: fatal error LNK1169: 找到一个或多个多重定义的符号,已经在...obj中定义过。反正编辑时不报错,编译链接时报错。怎么回事?
我有很多变量,我希望有一个Init函数,点击按钮时给这些变量赋值,以前是直接写在onclick事件中的,但不想点击一次就重新建立一次这些变量并赋值,感觉不是一个优化的写法。大神们怎么看?
解决方案
你在h文件中写int a;那个是定义不是申明。把整个写到cpp文件中。头文件中写extern int a;
解决方案二:
看看吧
这里写的很好
http://blog.csdn.net/chenqiai0/article/details/8490665
解决方案三:
在头文件中定义,会产生重复定义的错误
2种解决方法
1、在源文件定义,头文件声明
2、静态变量 static
解决方案四:
在头文件中定义,会产生重复定义的错误
2种解决方法
1、在源文件定义,头文件声明
2、静态变量 static
解决方案五:
头文件不要重复包含,加上#pragma once
如果是全局变量,其他需要用到的地方extern
解决方案六:
头文件重复包含了
头文件中加上#pragma once
时间: 2024-07-31 00:00:39