zoukankan      html  css  js  c++  java
  • C++基础之全局变量

    C++的水比較深,之前我一直以为C++的全局变量会像其它语言一样,很easy仅仅要在头文件里,定义一个变量就可以,比方以下的test.h:

    #ifndef _TEST_H
    #define _TEST_H
    
    int a = 10;
    
    #endif


    我都加上头文件保护符,总应该没有多重包括的问题了吧?没想到多个cpp文件引用同个头文件还是狂报错:error LNK2005 a 已经在 xx.obj中定义。

    又拿起《C++ Primer》看了下。发现正确的应该这么写:

    test.h

    #ifndef _TEST_H
    #define _TEST_H
    
    extern int a;
    
    #endif

    test.cpp

    #include "test.h"
    
    int a = 10;

    原来:头文件用于声明而不是用于定义!定义仅仅能够出现一次。而声明则能够出现多次。

    extern int a = 10;//初始化了值,是定义
    double b;            //没有extern关键词,是定义

    对于头文件不应该包括定义这一规则。有3个例外。

    头文件能够定义类,值在编译时就已知道的const对象和inline函数。

    C++基础之全局变量


  • 相关阅读:
    控件视图的实现原理
    建造者模式
    leetcode701
    leetcode991
    leetcode990
    leetcode989
    leetcode988
    leetcode987
    leetcode986
    leetcode985
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7039521.html
Copyright © 2011-2022 走看看