C++ 几个.cpp文件之间如何实现数据共享
比如说有graph.cpp;main.cpp是否可以在graph.h中定义二者共需的全局变量,二者都包含graph.h,这样可以吗?为什么会出现LINK2005重定义错误...
比如说有graph.cpp;main.cpp是否可以在graph.h中定义二者共需的全局变量,二者都包含graph.h,这样可以吗?为什么会出现LINK2005重定义错误?
展开
5个回答
展开全部
全局变量不是这么用的,main.cpp中定义,然后在graph.h中声明为外部变量就行了
eg.
main.cpp
int pysTotalNumber;
在graph.h中
extern pysTotalNumber;
eg.
main.cpp
int pysTotalNumber;
在graph.h中
extern pysTotalNumber;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
共享是可以的。你说的解决方案:
1.将该变量声明为static.
2.将该变量声明为extern,然后再在一个cpp中声明它,比如graph.cpp中。
如:
// graph.h
extern int b;
// graph.cpp
int b;
// main.cpp
这里可以直接用。
1.将该变量声明为static.
2.将该变量声明为extern,然后再在一个cpp中声明它,比如graph.cpp中。
如:
// graph.h
extern int b;
// graph.cpp
int b;
// main.cpp
这里可以直接用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你两个文件都包含graph.h头文件了,所以在连接的时候就有两个头文件的副本,所以就出错了,你可以这样,在头文件的前面写上
#ifndef XXXXX
#define xxx
在头文件的最后写上
#end if
这几行代码就是防止头文件被二次编译的
#ifndef XXXXX
#define xxx
在头文件的最后写上
#end if
这几行代码就是防止头文件被二次编译的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以
解决方法是使用自动处理的宏
#ifndef GRAPH_H
#define GRAPH_H
也可以在graph.h里加上 #pragma once
告诉编译器只处理一次
上面是头文件重定义的处理
C++里处理全局变量有很多方法
如使用类的静态成员等。。。。
解决方法是使用自动处理的宏
#ifndef GRAPH_H
#define GRAPH_H
也可以在graph.h里加上 #pragma once
告诉编译器只处理一次
上面是头文件重定义的处理
C++里处理全局变量有很多方法
如使用类的静态成员等。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#define xxx
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询