很抱歉問這個問題,因為我確定它已經得到了回答,但我在過去 30 分鐘內嘗試搜索不同的術語,但沒有找到與此類似的定義。
struct {
volatile uint8_t tail;
uint8_t buf[128];
} uart = {0,0};
在上面結構體的定義中,我不明白最后“= {0,0}”的目的是什么。
這個叫什么?它的目的是什么?
如果我冒險猜測,它是某種默認值初始化器,猜測它在定義“uart”型別的新變數時將尾部設定為 0 并且陣列填充為 0。這可能是某個問題的重復,我錯過了它所需的關鍵字。
編輯:剛剛有了另一個想法......這是某種內嵌結構定義并初始化一個名為 uart 的變數嗎?IE,它沒有定義一個名為 uart 的結構體,而是定義了一個名為 uart 的變數,內嵌結構體定義,然后設定值。非常不尋常,如果是這樣。我從來沒有想過行內結構定義。
uj5u.com熱心網友回復:
C 中沒有默認初始化,因為 C 物件沒有建構式。
唯一的例外:未初始化歸零的靜態存盤持續時間物件。
uart = {0,0};
它隱式地uart用兩個零初始化變數。最好寫它,{0, {0,}}因為第二個成員是一個錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367986.html
上一篇:For回圈的遞減初始化(C)-EX:for(i--;i>0;i--)
下一篇:為什么我的代碼呼叫一個函式兩次?
