我遇到了一个问题,似乎在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类型的变量。 –