日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

C++头文件保护符和变量的声明定义

發布時間:2025/3/15 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++头文件保护符和变量的声明定义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1#ifndef?#define?#endif頭文件保護符

在編譯的過程中,每個.cpp文件被看成一個單獨的文件來編譯成單獨的編譯單元,#ifndef?保證類的頭文件在同一個.cpp文件里被多次引用后不會出現重定義問題。

注意:僅僅是防止在同一個.cpp文件里被多次引用。

樣例:

// file1.h class file1 { };// file2.h #include "file1.h" class file2 { };// file3.h #include "file1.h" #include "file2.h"
file3.h展開來是這種:

// file1.h展開的內容 class file1 { }; // file2.h展開的內容 class file1 { }; class file2 { };

這時候就會出現重定義了,假設在每一個文件加上#ifndef頭文件保護符:


// file1.h #ifndef _FILE1_H_ #define _FILE1_H_class file1 { };#endif // !_FILE1_H_
// file2.h #ifndef _FILE2_H_ #define _FILE2_H_#include "file1.h" class file2 { };#endif // !_FILE2_H_
// file3.h #ifndef _FILE3_H_ #define _FILE3_H_#include "file1.h" #include "file2.h"#endif // !_FILE3_H_

這時候展開file3.h時,由于_FILE1_H_僅僅會被定義一次。所以就不會出現重定義錯誤。




2、變量的聲明和定義

定義:用于為變量分配存儲空間,還能夠為變量指定初始值。在一個程序中,變量有且僅有一個定義。

聲明:用于向程序表明變量的類型和名字。在一個程序中。聲明能夠有多個。定義也是聲明:當定義變量時我們聲明了它的類型和名字。能夠通過使用externkeyword聲明變量名而不定義它:extern?int?i;。

樣例:

// file1.h #ifndef _FILE1_H_ #define _FILE1_H_int a = 1;#endif // !_FILE1_H_
// file2.h #ifndef _FILE2_H_ #define _FILE2_H_#include "file1.h"#endif // !_FILE2_H_
// main.cpp #include <iostream>int main() {extern int a;std::cout << a << std::endl;system("pause");return 0; }

這時候編譯會報錯,由于在file1.h定義了a。在file2.h的展開中又定義了a。

有人會問。#ifndef不是防止重定義的嗎?#ifndef是防止在同一個文件的重定義,在上面的情況,file1.h和file2.h是兩個不同的文件。所以會在file1.h和file2.h同一時候出現int?a?=?1,就出現重定義錯誤了。

所以不要在頭文件定義變量,最好的做法是:在頭文件聲明變量,在.cpp定義變量,在須要使用該變量的地方先聲明再使用。

改動下上面的樣例:

// file1.h #ifndef _FILE1_H_ #define _FILE1_H_extern int a;#endif // !_FILE1_H_
// file1.cpp #include "file1.h"int a = 1;
// file2.h #ifndef _FILE2_H_ #define _FILE2_H_#include "file1.h"#endif // !_FILE2_H_

main.cpp不變。這時候就能夠正常執行了。




3、能夠在頭文件定義的三個例外

(1)類的定義。

類的定義很多其它像是聲明,由于此時并沒有分配空間。

(2)值在編譯時就已知的const對象。

如:const char c = 'c';,這個是在編譯時就已經確定值的。之后程序不能改變。

而const char *c = 'c';是不能夠的,由于指針不是在編譯時確定值的。

(3)inline內聯函數。

轉載于:https://www.cnblogs.com/bhlsheji/p/5116129.html

總結

以上是生活随笔為你收集整理的C++头文件保护符和变量的声明定义的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。