考慮以下結構:初始化結構零,除了一個外地
typedef struct _sampleStruct{
bool b;
int i;
double d;
int arr[10];
}sampleStruct;
我想初始化結構,使得b
被初始化爲true
和領域的休息全球實例初始化爲0 。 此外,我想初始化採取地方,我宣佈了,即我不想要做這樣的事情:
sampleStruct globalStruct = {0};
int someFunc()
{
//...
globalStruct.b = true;
//...
}
有沒有辦法做到這一點? 我想過做這樣的事情:
sampleStruct globalStruct = {.b = true, 0};
做它承諾其他所有領域都始終爲零?
注意:以下劃線開頭的名稱是爲所有名稱空間的實現保留的。不要在應用程序代碼中使用它們! – Olaf
@Olaf帶有一個前導下劃線的符號只保留在全局範圍內(因此對於任何正常的結構定義它都是不允許的)。在所有範圍內都保留具有雙(或多)下劃線的符號,或帶有下劃線後跟大寫字母的符號。 –
@JoachimPileborg:我應該區分,謝謝澄清。無論如何,'typedef'通常在文件範圍內。所以這很可能適用於此。但是,是的,因爲OP沒有提供[mcve],所以**可以在塊範圍內。 – Olaf