Tag: initialization

如何在ANSI C中的结构中使用枚举?

以下代码必须在main-function中使用,但我不知道它是如何使用的。 struct SomeItem { enum {MOVIE, MUSIC} itemType; union { struct Movie* movie; struct Music* music; }; }; 这个结构用在带有previous / item / next指针的动态链表中,但我不知道如何设置枚举。 或者如何初始化它。 我需要知道它在main函数中的样子。 biglist.someitem = ???; /* declaration I use */ struct Library* biglist; 更多代码,以了解我想做什么。 struct Library{ struct SomeItem* someitem; struct SomeItem* previousItem; struct SomeItem* nextItem; }; 编译器错误:C2037:’someitem’左侧指定未定义的struct / union’library’C2065:MOVIE:未声明的标识符 我仍然是ANSI C的新手,所以不要拍我好;)

用三元算子初始化结构

为什么三元运算符不能用于初始化结构类型,而它可以用来初始化像int这样的基类型? 示例代码: #include #define ODD 1 int main(int argc, const char *argv[]) { static struct pair_str { int first; int second; } pair = ( ODD ) ? {1,3} : {2,4}; // ERROR printf(“pair %d %d\n”, pair.first, pair.second); int number = (ODD) ? 1 :2; // FINE return 0; } 编译器错误: /home/giuseppe/struct.c: In function ‘main’: […]

如何在全局范围内初始化struct / class

我现在知道如何在全局范围内初始化结构。 以下是示例代码: #include struct A { int x; }; struct A a; ax=6; int main() {} 我在Ubuntu 11.10上,当我编译这个程序时,我收到以下错误: error: ‘a’ does not name a type 我不知道为什么会发生这种情况。 我想知道如何将复杂参数传递给某些回调函数? 非常感谢

使用malloced内存未定义写入前读取?

根据这个reddit注释线程 ,如果在写入内存之前尝试读取内存,则它是未定义的。 我指的是正常的堆内存,它已成功地进行了malloc编辑。 …请注意,这不是严格有效的C:允许编译器/运行时系统使用所谓的陷阱表示来初始化未初始化的内存,这会导致访问时出现未定义的行为。 我觉得很难相信。 有标准报价吗? 当然,据我所知,无法保证内存已被清零。 这个未初始化的存储器中的值基本上是伪随机的或任意的。 但我真的不相信标准会将此称为未定义的行为 (从某种意义上说它可能是段错误,或者删除所有文件,或者其他什么)。 其余的reddit线程没有对此问题进行更多说明。

如何将C-struct指定的初始化程序重写为C89(resp MSVC C编译器)

伙计们,我有这个问题: 通常在C99 GCC(cygwin / MinGW / linux)中,C struct中的初始化器有点符号语法。 像这样: //HELP ME HOW TO REWRITE THIS (in most compact way) to MSVC static struct my_member_t my_global_three[] = { {.type = NULL, .name = “one”}, {.type = NULL, .name = “two”}, {.type = NULL, .name = “three”}, }; 将my_memeber_t定义在头文件中: struct my_member_t { struct complex_type * type; char […]