【发布时间】:2015-06-04 13:06:42
【问题描述】:
我尝试通过 C 编程用内部的另一个结构指针初始化一个结构指针,否则我得到分段错误。结构定义如下:
`struct gfcontext_t{
char *fileContent;
size_t fileLength;
char *response;
int socket_hd;
};
struct gfserver_t{
char *serverName;
int serverPort;
int maxConnection;
ssize_t (*handler)(struct gfcontext_t *, char *, void * );
struct gfcontext_t *ctx;
int status;
};
初始化是在函数内部给出的:
gfserver_t * gfserver_create(){
struct gfserver_t *gfs;
gfs=(gfserver_t*) malloc(sizeof(struct gfserver_t));
......//how to do the initialization?
return gfs;
}`
【问题讨论】:
-
标准警告:请do not cast
malloc()和C中的家人的返回值。 -
//how to do the initialization?...请展示现有的努力 -
标准警告 #2:请不要使用 C++ 编译器来编译 C 代码。如果您需要在 C++ 项目中使用一些 C 代码,请将 C 代码(使用 C 编译器)编译为静态或动态目标文件,然后在编译 C++ 代码时将该目标文件链接到您的 C++ 项目(使用 C++ 编译器)。
-
@undefinedbehaviour 是不是有点矫枉过正,如果代码在 C/C++ 子集中?
-
@undefinedbehaviour 抱歉,您怎么知道 OP 使用了
C++编译器?