我正在嘗試根據輸入引數創建一個型別為 A 或 B 的變數,并為其分配一個強制轉換的 void 指標。
void set_info_param(void* info, bool req)
{
...
if (req)
struct info *capa_info = (struct info *) info;
else
struct info_old *capa_info = (struct info_old *) info;
... [Use capa_info]
}
當我嘗試編譯它時,出現以下錯誤:
'struct' 之前的預期運算式
uj5u.com熱心網友回復:
由于您定義了新變數,因此您需要將其放入如下塊中:
if (req)
{
struct info *capa_info = (struct info *) info;
...
}
else
{
struct info_old *capa_info = (struct info_old *) info;
...
}
uj5u.com熱心網友回復:
在 C 中宣告不是陳述句。
另一方面,if 陳述句需要一個子陳述句。
因此,如果您希望 if 陳述句的子陳述句具有宣告,則將該宣告包含在復合陳述句中,例如
if (req)
{
struct info *capa_info = (struct info *) info;
}
else
{
struct info_old *capa_info = (struct info_old *) info;
... [Use capa_info]
}
uj5u.com熱心網友回復:
我正在嘗試創建 A 或 B 型別的變數
這不是 C 型別的作業方式。每個變數都有一個在編譯時靜態已知的型別。您不能讓變數根據運行時條件采用兩種型別之一。如果需要兩種不同的型別,則必須使用兩種不同的變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/373033.html
