我已经构建了一个如下所示的book结构:
typedef struct _book{
char name[NAME_LENGTH];
char authors[AUTHORS_NAME_LENGTH];
char publisher[PUBLISHER_NAME_LENGTH];
char genre[GENRE_LENGTH];
int year;
int num_pages;
int copies;
}book;
Run Code Online (Sandbox Code Playgroud)
我正在尝试定义一个图书馆,这是一个书籍阵列,所以稍后我可以在图书馆中存放另一个功能的图书.当像这样定义库时,内存写入/读取有问题library[BOOK_NUM],所以我决定分配.
问题是,它只允许我在main函数内部进行分配.当我写这行时:
book *library = (book*)malloc(BOOK_NUM*sizeof(book));
Run Code Online (Sandbox Code Playgroud)
在main()它之外给我一个错误:
IntelliSense:常量表达式中不允许函数调用
错误C2099:初始化程序不是常量
但如果我将上面的线移到里面main()就行了.这是为什么?
另外,定义数组的更好方法是什么,以便以后可以用其他函数更改它?
在我的项目中,一个structre正在几个函数中使用.
像这样:
void function1 (Struct_type1 * pstType1);
Run Code Online (Sandbox Code Playgroud)
但是当我搜索Struct_type1引用时,我找不到任何引用.必须在某处定义此结构.如何找到定义?
OS-Windows
编辑:我认为没有源代码很难回答这个问题,我不能在这里分享这个大项目.所以,我把我的问题改为:
(通过隐藏我的意思是没有人能看到定义.)