小编SKD*_*SKD的帖子

如何在main()之外分配一个struct?

我已经构建了一个如下所示的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()就行了.这是为什么?

另外,定义数组的更好方法是什么,以便以后可以用其他函数更改它?

c dynamic-memory-allocation

0
推荐指数
1
解决办法
394
查看次数

隐藏声明是否可以在项目中使用?

在我的项目中,一个structre正在几个函数中使用.

像这样:

void function1 (Struct_type1 * pstType1);
Run Code Online (Sandbox Code Playgroud)

但是当我搜索Struct_type1引用时,我找不到任何引用.必须在某处定义此结构.如何找到定义?

OS-Windows

编辑:我认为没有源代码很难回答这个问题,我不能在这里分享这个大项目.所以,我把我的问题改为:

  • 嵌入式项目中是否可以隐藏声明?

(通过隐藏我的意思是没有人能看到定义.)

c embedded source-insight

0
推荐指数
2
解决办法
124
查看次数