2014-02-14 131 views
0

我是编程新手,所以我不知道这个问题有多严重。我想里面初始化主)的一些结构变量(使用代码:初始化结构变量时出错

struct {double real;double imaginary;} c1={0.0,1.0},c2=(1.0,0.0),c3; 

但是当我编译(使用gcc),它说:“错误:无效的初始化”指向第一个开括号(第一个“双”之前的那个)。

那么这个说法有什么问题?在我研究的书中(C Programming,A Modern Aproach-K N. N. King,p.379)也有类似的例子。 感谢任何答案。

+0

注1:忽略的代码末尾的$字符;我意外地输入了它 note2:当我初始化一个变量(例如c1)时,它可以工作。多于一个的问题是什么? – user3257624

回答

2

您需要在c2初始化,没有括号括号:

struct {double real;double imaginary;} c1={0.0,1.0},c2={1.0,0.0},c3; 
                ^ ^
+0

哈哈!我什至没有注意到它...谢谢 – user3257624

+0

@ user3257624很高兴我能帮上忙。不要忘记[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)。 – arshajii

-1

您需要在结构定义之后再添加一个分号。

编辑:试试这个。

struct myNumber { 
    double real; 
    double imaginary; 
}; 

struct myNumber c1 = {0.0,1.0}; 
struct myNumber c2 = {1.0,0.0}; 
struct myNumber c3; 

你想命名你的结构。此外,初始化一个结构变量时,你想使用花括号。你说这工作:

struct { 
    double real; 
    double imaginary; 
} c1 = {0.0,1.0}; 

我猜,因为结构是作为一个数据类型此编译但你无法再访问该数据类型。

+0

不,struct {...}是一个类型,所以'struct {...} foo'是一个带有匿名结构的变量声明。 – Kevin

+1

对不起,但(如果我理解你说的话)它不起作用。现在我收到了一条警告消息,内容是:未命名的struct/union不定义实例 – user3257624

+0

哦,您需要在myNumber前添加一个结构体。我编辑了我的帖子。 – Marv