[C++学习]变量的声明与定义

描述

C++ 语言支持分离式编译机制,该机制允许把程序分割为多个文件,每个文件可以独立编译。例如:std::cout和std::cin,它们定义与标准库中,但是却能被我们的程序使用。所以,为了支持该机制,C++ 语言将声明与定义区分开来。

声明(declaration)使得名字为程序所知,如果一个程序想使用另外一个文件中的定义变量,则需要包含对那个文件的声明;定义(definition)创建与名字关联的实体。

使用方法

声明一个变量需要在变量前添加extern,并且不能显式的初始化变量。

extern int i; // 声明i,但没有定义
int j; // 声明并且定义j

任何包含显式初始化的声明即成为定义。

extern double pi = 3.14159; // 定义

示例

// 1.cpp
#include <iostream>

int i = 1;

void fun1()
{
    ......
}

// 2.cpp
#include <iostream>

extern int i;

int main()
{
    std::cout << i << std::endl;
    return 0;
}

结果:

linzijie@DESKTOP-3HKDU47:~/code$ g++ 1.cpp 2.cpp -o demo
linzijie@DESKTOP-3HKDU47:~/code$ ./demo
1

总结

  1. 如果要在多个文件中使用同一个变量,就必须将声明和定义分开;
  2. 任何包含显式初始化的声明即成为定义;
  3. 变量能且只能被定义一次,但是可以被多次声明;换言之变量的定义必须出现在且只能出现在一个文件中,而其他用到该变量的文件必须对其进行声明,却不能重复定义。
  4. 在函数体内部,如果试图初始化一个由extern关键字标记的变量,将引发错误。

猜你喜欢

转载自www.cnblogs.com/linzijie1998/p/11533197.html