2014-09-26 70 views
0

所以我已經給出了這個代碼,我應該在我的代碼中使用getopt_long()函數從命令行讀取選項並通過開關菜單傳遞它們。問題在於該功能,因此如果我不初始化我收到以下錯誤的long_opts值:警告:'long_opts'可能在此函數中未初始化使用[-Wmaybe-uninitialised]

error: 'long_opts' undeclared (first use in this function)

而如果我確實初始化它的價值,我收到錯誤的標題:

warning: 'long_opts' may be used uninitialised in this function [-Wmaybe-uninitialised]

目前我想知道兩個邪惡中的哪一個可能是因爲我絕對找不到解決方案。

+0

也許顯示你的代碼?也許你只是在一個分支的一個流中初始化你的變量? – HuStmpHrrr 2014-09-26 18:44:18

+0

請顯示代碼。 – 2014-09-26 18:44:32

+2

顯示您的代碼,並重新考慮聲明和初始化的區別。 – gsamaras 2014-09-26 18:46:34

回答

1

,如果您使用的是未初始化的結構,然後初始化它像這樣:

static struct option long_options[] = { {"add", required_argument, 0, 0 }, {"append", no_argument, 0, 0 }, {"delete", required_argument, 0, 0 }, {"verbose", no_argument, 0, 0 }, {"create", required_argument, 0, 'c'}, {"file", required_argument, 0, 0 }, {0, 0, 0, 0 } };

顯示您的代碼,請

錯誤:出現 'long_opts' 未申報

這個錯誤,如果你沒有聲明一個變量並在函數中使用它。

警告:「long_opts」可在此功能

這不是錯誤使用未初始化的,它是「警告」,如果你是申報VAR或結構,但不將其初始化並嘗試出現此警告在函數或表達式中使用它,但這些var或struct的值未定義

相關問題