zoukankan      html  css  js  c++  java
  • 全局变量之使用问题

    之前帮同学做点小程序还没发现问题,这次做了个大的才发现,全局变量的使用貌似存在很多问题,尤其是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

     

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

  • 相关阅读:
    append 注意事项
    列表与字符串转换
    删除列表元素
    段寄存器
    通用寄存器
    最强大的王爽汇编语言学习环境使用教程
    JavaScript获取输入框内容
    ubuntu16.04中将python3设置为默认
    Django之cookie和session
    postman 安装桌面版
  • 原文地址:https://www.cnblogs.com/color-my-life/p/3218036.html
Copyright © 2011-2022 走看看