2012-09-05 84 views
-4
#define xyz 

static xyz myObject *__my_getitem (myObject* a, myObject *b) { 
    myObject *r; 
    ......... 
    ........ 
    return r; 
} 
  1. 什麼是static
  2. 什麼xyzstatic
  3. 做爲什麼會出現在__my_getitem
  4. 是什麼betweern myObject* amyObject *a(的*位置)
+4

請參閱http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – fasked

+1

回答您的問題:學習C++。 – Bojangles

+1

我建議你拿起C++(或C)的初學者書籍,因爲這是非常基本的東西。 –

回答

2

什麼是static

這意味着不同的事物在不同的背景下;你需要閱讀你的書以瞭解它的所有含義。在這種情況下,這意味着該函數僅在該源文件中可用,而不是在單獨編譯並鏈接到它的任何文件中。

什麼是xyz使用static

引起混淆。這是一個空的宏(在第一行中定義),因此,在編譯程序之前,預處理器將不會替換它。

爲什麼會出現在__my_getitem

*前一個*類型改變類型的指針後;所以這意味着函數返回一個指向myObject的指針。(順便說一句,你不應該有兩個連續_字符聲明的名稱,這樣的名稱被保留。)

是什麼betweern myObject* amyObject *a

無(*的位置)的差異完全;除了需要分離令牌的地方之外,空白不會改變程序的含義。有些人針對這兩種風格的語義含義打了神聖的戰爭,但語言並不在意。

+0

謝謝邁克....這真的很有幫助 –

2

什麼是靜態的區別前一個*

以「static」開頭的函數定義的範圍受限制。它們只能被同一個源文件中的函數看到和使用。如果在當前文件中發生的處理之外有一個沒有任何價值的函數,或者您想限制使用,以便將來可以修改它,但由於其範圍有限,可能會導致分支較少,您可以這樣做。

什麼是XYZ靜態

在這種特定情況下做的,某某被什麼也沒有更換,所以它什麼都不做。在一般情況下,它可能會修改編譯器如何生成此函數,從而更改「調用約定」。也就是說,xyz對編譯器有一些意義,而不是C語言的一部分。

爲什麼會出現在 __my_getitem

前方的星號它表明__my_getitem函數返回一個指向myObject的。

是什麼 myObject的之間的差* a和myObject的* A(的位置*)

沒什麼,作爲語法是柔性的。

+0

哇.... grt desripctio @scooter ...謝謝 –