typedef struct error{int warning, error, exception;}error;
main()
{
error g1;
g1.error =1;
printf("%d",g1.error);
}
這裏使用的是錯誤的是代碼示例,其輸出爲1由struct關鍵字
但我需要的是如何驗證碼正在開發一種解釋?
typedef struct error{int warning, error, exception;}error;
main()
{
error g1;
g1.error =1;
printf("%d",g1.error);
}
這裏使用的是錯誤的是代碼示例,其輸出爲1由struct關鍵字
但我需要的是如何驗證碼正在開發一種解釋?
讓我們先從洋蔥內:
struct error
{
int warning, error, exception;
};
定義一個結構稱爲error
有3個要素:warning
,error
和exception
。
要使用它,您可以用struct error g1;
替換您的main
函數中的error g1;
行。然後你將這個結構定義包裝在一個typedef中,這基本上告訴編譯器,有一個類型error
,它相當於struct error
。這些名稱都在獨立的空間中:類型,結構和結構中的元素。所以他們不衝突。也就是說,寫起來有點乾淨
typedef struct
{
int warning, error, exception;
} error;
因爲它沒有給出struct 2的名字。我給出的第一個版本也是有效的;有些人更喜歡明確使用結構。
這是什麼,你不明白在這段代碼? error
不是C中的保留字,所以您可以自由使用它作爲(變量/結構)名稱。
你定義含有3個int
字段struct
,實例化其作爲局部變量g1
,分配1給它的字段之一,然後打印在標準輸出該字段。如果您有任何更具體的問題,請澄清。
您定義了一個結構error
,它具有一個名爲error
的int
成員。您爲struct error
定義了typedef(換句話說,別名),名稱爲error
。然後您使用typedef名稱創建了struct error
的一個實例,名爲g1
。然後,您將值1
分配給error
實例g1
的error
成員。最後,你打印的值爲g1.error
。
結構名稱和typedef名稱佔用單獨的名稱空間—它們可以是相同的。在C語言中,你必須把關鍵字struct
前結構的名字:
struct S{ /*...*/ };
struct S instance1;
而不是之前的typedef名稱:
struct S{ /*...*/ };
typedef struct S S;
S instance2;
你也可以的typedef工會和枚舉。您可以將結構定義有一個typedef定義組合:
typedef struct S { /* ... */ } S;
而且你可以省略結構名稱:
typedef struct { /* ... */ } S;
在這種情況下,結構類型只能通過typedef的簡稱。
這是c中typedef結構的一個非常基本的用法。我建議你訪問the wikipedia page on structs的總體概述,但在短:
的第一行創建一個新的結構類型struct error
其中包含3個整數:warning
,error
和exception
。 typedef充當別名,將struct error
重命名爲error
,以便您可以通過短名稱引用此類型的項目。
主內部的代碼然後在堆棧上創建一個新的error
,將其error
屬性設置爲1,然後將其打印出來。