C++ 学习之旅(10)——static与extern
生活随笔
收集整理的這篇文章主要介紹了
C++ 学习之旅(10)——static与extern
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
只要你看過我系列中之前關于編譯和鏈接的內容,你就能看懂以下內容,直接上例子:
Static.cpp
int S_var = 5;main.cpp
#include <iostream>int S_var = 10;int main() {std::cout << S_var << std::endl;std::cin.get(); }這樣Build是會報錯的“fatal error LNK1169: one or more multiply defined symbols found”,因為鏈接器在多個地方發現了S_var的定義,從而發生了沖突。如果我們修改一下Static.cpp:
static int S_var = 5;這樣就會輸出10。
所以static關鍵字就是把定義限制在它自己所在的文件中,這樣在鏈接的時候別的文件就不會鏈接到這個定義,避免產生沖突。
那如果我們希望在main.cpp中使用static.cpp的S_var呢?這時可以使用extern:
Static.cpp
int S_var = 5;main.cpp
#include <iostream>extern int S_var;int main() {std::cout << S_var << std::endl;std::cin.get(); }此時就會輸出5。那如果這樣呢?
Static.cpp
static int S_var = 5;main.cpp
#include <iostream>extern int S_var;int main() {std::cout << S_var << std::endl;std::cin.get(); }自然會報錯,因為main.cpp希望鏈接一個外部的S_var,但是Static.cpp中的S_var是不會被其他文件找到的,所以報錯“fatal error LNK1120: 1 unresolved externals”。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的C++ 学习之旅(10)——static与extern的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spotify 调整付费模式,每年播放量
- 下一篇: C++ 学习之旅(11)——类和结构中的