我遇到了一個問題,似乎在C89之後的任何C標準都沒有解決,除非提及結構初始化限制已被解除。但是,我使用Open Watcom IDE(用於調試)遇到錯誤,其中編譯器指出初始化程序必須是常量表達式。用變量C結構初始化
以下是發生了什麼事情的要點。
typedef struct{
short x;
short y;
} POINT;
void foo(short x, short y)
{
POINT here = { x, y }; /* <-- This is generating the error for the compiler */
/* ... */
}
任何想法爲什麼,或什麼標準不允許的呢?
我不知道你的問題的答案,但我會建議你創建一個函數,如:POINT createPOINT(x,y)來初始化所有POINT類型的變量。 –