2014-10-27 23 views
17

我不是在談論對象C++也沒有我想了解「對象」中的this text上下文中表示目標C:C中的對象是什麼?

如果文件範圍標識符的聲明對象或一個函數包含存儲類別說明符static,該標識符具有內部鏈接。否則,該標識符具有外部鏈接。有關存儲類別說明符非終結符的討論,請參閱Storage Classes

在一個翻譯單元內,具有內部鏈接的標識符的每個實例表示相同的標識符或功能。內部鏈接的標識符對於翻譯單元是唯一的。

我已經在其他不同的C主題中看到了單詞「object」。但是當我Google時,我只能得到C++的參考。

我也讀過它herehere

+1

請注意,C++標準中對象的定義與OOP無關。 「_一個對象是storage_的一個區域」(C++ 11 draft n3290§1.8)。 – Mat 2014-10-27 06:45:23

+0

可能最好在這裏解釋:http://stackoverflow.com/questions/1564359/object-code-linking-time-in-c-language – Rob 2014-10-27 12:20:46

+0

@Rob:這與這個問題無關。 – Mat 2014-10-28 06:13:26

回答

23

術語對象由C11標準3.15節中定義:

對象數據存儲在所述執行環境的

區域,其內容可以表示 值

MSDN鏈接上的文本是從部分複製粘貼的(無歸屬地!) C11標準的6.2.2/3。

爲了解釋這個定義,數據存儲區域是關鍵部分。所有變量都是對象,對象也可以通過malloc進行分配。

+6

另外,您可能更願意直接閱讀標準草稿或標準草稿,而不是使用Google搜索條件。 [見這裏](http://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents)鏈接。 – 2014-10-27 04:28:23

+0

我不同意你的解釋,雖然我在朦朧的記憶中說話,也沒有在這裏檢查我自己的評論。 C代碼將被編譯成彙編代碼,最終將用於代碼對象和機器代碼。不要把我的步驟作爲逐字的對象代碼,但我不相信變量是malloc沒有分配的對象。編輯:http://stackoverflow.com/questions/1564359/object-code-linking-time-in-c-language – Rob 2014-10-27 12:16:41

+0

所以在簡單的英語中,對象可以是任何東西:變量,函數,結構? – user3646717 2014-10-27 17:56:41