• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
生若秋叶
gonna to be a designer,a designer of my life!!
博客园    首页    新随笔    联系   管理    订阅  订阅

全局变量之使用问题

之前帮同学做点小程序还没发现问题,这次做了个大的才发现,全局变量的使用貌似存在很多问题,尤其是include的冲突产生的重定义问题,这里的解决办法如下:

1.不使用全局变量,将全局变量转换为类中,可以设置权限为public,这样可以从根本上解决这一问题.

2.使用ifndef  define来控制编译流程,从而消除重定义问题,(但是这个对全局变量貌似失效了?).

#include <iostream>
using namespace std;

#ifndef _HAHAHA_

#define _HAHAHA_
#define ADMIN "admin"
#define ADMIN_PW "admin"
#define USER "test"
#define USER_PW "test"

//问题的结构体
struct Question
{
    string question;
    string answer[4];
    int right_answer;
};

#endif

 以后再写的时候必须去总结下关于头文件的问题,不然这个太影响编程效率了.总结出相应的规范,在网上看到一个说法:

在一段时间的编程中,时常会遇到重定义(redefinition)问题。一般都是#include在包含头.h文件时出现了重复包含的关系。运气好的话可以比较容易的发现问题,运气不好的话只好列出所有的头文件.h中的包含关系,挨个检查是哪里出了问题。最近发现如果遵循“在头文件.h中不再包含头文件.h”的原则,可以从根本上避免这个问题。虽然这样做会使得在代码文件.c或.cpp中必须各自包含进来所需的头文件.h,还要注意在包含时可能会存在顺序的问题,但这比起查找何处进行了重定义来说简单了许多,也使包含关系更加清晰。

对原来的项目中的所有文件按上述原则进行了修改,暂未发现不良影响,感觉还不错。转自http://blog.pfan.cn/programming/21658.html

 

听起来貌似不错,下次试试看!

posted @ 2013-07-26 20:44  HappyCoder  阅读(422)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3