使用Structures时出错?

时间:2015-09-28 14:30:36

标签: c pointers structure

我有一个我已创建的结构文件,并试图让它显示在我的main函数中。我一直收到错误:

for /D %%G in ("*") DO (
    Pushd %%G
    set dir1=%%G
    sqlldr bods/password@SERVERBODS DATA=%dir1%/001.%dir1% CONTROL=ctl/001.ctl LOG=log/001.log BAD=bad/001.bad DISCARD=dsc/001.dsc
    Popd
 )

lab2Structure.h:11:1:错误:预期的标识符或'(''''''''''''''''''''  {

我该如何解决这个问题? 这是我的structure.h文件:

" error: initializer element is not constant
 struct childrensBooks *book1 = (struct childrensBooks *) malloc(sizeof(struct childrensBooks));  //Structure of book #1
                                                                           ^

}

2 个答案:

答案 0 :(得分:0)

您不能像外部函数和头文件那样编写已执行的代码。 H代表定义,函数体的C文件。

答案 1 :(得分:0)

对于如何初始化指针内存,您似乎混淆了两种不同的约定。您正在使用malloc调用来分配内存,就像您计划将其用作指针一样Initializing a pointer to a structure,但是您似乎正在尝试将这些内容组合在一起,如How to initialize a struct in accordance with C programming language standards

无论您决定使用哪种,都不要在头文件中定义所有这些信息。我知道它看起来很方便,除了头文件之外的所有文件都应该只留给加载到符号表中的内容。更简单地说,如果你声明一个变量将它放在一个C文件而不是一个H文件中。 (我对此略有概括,但对于你的情况,这似乎是合适的)。