自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談聲明和定義區(qū)別

開發(fā) 后端
這二個(gè)概念有必須解釋一下 ,首先,必須知道“聲明”和“定義”之間的區(qū)別,因?yàn)檫@兩個(gè)術(shù)語(yǔ)在經(jīng)常出現(xiàn)在我們平時(shí)的talking中,有責(zé)任去明白她們。

一般解釋來(lái)說:聲明是告訴編譯器存在這么一個(gè)標(biāo)識(shí)符。定義則是為程序申請(qǐng)一塊內(nèi)存。

 

例如:

  1. int x; //這是一個(gè)定義   
  2. extern int x; //這是聲明   
  3. int x = 10; //這也是一個(gè)定義  

在程序中使用extern int x = 10,也是定義。

 

聲明的操作一般使用在頭文件中,這樣就可以在多個(gè)源文件中引用同一個(gè)變量。這也表明了為什么不能使用定義。因?yàn)轭^文件中在被包含進(jìn)源文件后,實(shí)際上是成為了源文件的一部分。

所以,如果是在頭文件中,定義一個(gè)變量,那么會(huì)在多個(gè)源文件中出現(xiàn)這個(gè)變量的定義。也就是所謂的重復(fù)定義。

 

以上說的是不能在頭文件中定義變量。但是有三個(gè)例外。頭文件可以定義類、值在編譯時(shí)就知道的const對(duì)象和inline函數(shù)。

 

在頭文件中定義這些實(shí)體(因?yàn)樗鼈儾恢皇锹暶髁耍?,是因?yàn)榫幾g器需要它們的定義來(lái)產(chǎn)生代碼。

例如,為了產(chǎn)生能定義和使用類的對(duì)象的代碼,編譯器需要知道組成該類的數(shù)據(jù)成員,同樣還需要知道能夠在這些對(duì)象上執(zhí)行的操作。類的定義提供了這些信息,所以需要在頭文件中定義類

 

因?yàn)閏onst變量默認(rèn)為定義它的文件的局部變量。所以即使在多個(gè)源文件中出現(xiàn)這個(gè)變量的定義也是合法的。

1、當(dāng)const變量使用常量表達(dá)式初始化時(shí),它的初始化過程可以在頭文件中實(shí)現(xiàn)。

2、如果const變量不是使用常量表達(dá)式初始化,那么就不能在頭文件中初始化該變量,而是要在源文件中定義并初始化該變量。然后在頭文件中添加extern聲明,以使其能夠被多個(gè)文件共享。
 

【編輯推薦】

  1. 秘訣!教你閱讀復(fù)雜的C/C++聲明
  2. 8.1.2 聲明結(jié)構(gòu)體的類型
  3. 3.1 局部變量的隱式聲明
  4. 3.1.2 在foreach循環(huán)中使用隱式聲明
責(zé)任編輯:于鐵 來(lái)源: 聚友博客
相關(guān)推薦

2024-01-05 08:31:08

C語(yǔ)言

2011-06-02 13:28:17

OverloadOverride

2009-10-20 14:03:48

VB.NET數(shù)組聲明VB.NET數(shù)組初始化

2009-09-02 14:18:08

C#聲明COM接口

2021-06-10 18:59:41

Java編程語(yǔ)言

2009-08-27 10:54:09

C# const和st

2011-05-07 14:15:39

工作站PC

2009-07-01 13:54:03

JSP注釋

2011-03-29 13:45:55

HTMLCSSjavascript

2011-07-06 14:12:14

Objective-C

2011-04-21 15:26:46

噴墨打印

2010-09-09 15:25:35

網(wǎng)絡(luò)協(xié)議

2017-08-01 00:19:15

Javascript函數(shù)函數(shù)聲明

2009-08-10 14:55:04

C#定義Nullabl

2011-06-28 10:55:20

C#接口抽象類

2012-04-05 10:42:08

智能布線傳統(tǒng)布線網(wǎng)絡(luò)布線

2020-08-20 07:00:00

人工智能深度學(xué)習(xí)技術(shù)

2010-05-13 17:00:50

Subversion安

2021-05-19 09:01:37

Pythonurllib庫(kù)requests庫(kù)

2013-01-08 15:11:19

OpenStackKVM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)