C99 gcc
我一直收到这个错误。我在main外部有一个结构体。在main内部,我尝试使用calloc在堆栈上进行分配。我似乎找不到出了什么问题。
谢谢你的建议,
错误:‘)’标记前应有表达式
/* global */
struct port_data_t
{
size_t task_id;
pthread_t *thread_id;
size_t start_port;
size_t number_ports;
} *port_data;
/* main function */
struct port_data_t *port_data = (struct task_data_t*) calloc(4, sizeof(port_data*));发布于 2009-03-09 05:48:03
应为变量名:注意* _befor_e变量名称。
发布于 2009-03-09 05:47:20
应为sizeof(port_data_t)而不是sizeof(port_data*)。前者的大小相当于一个port_data_t结构。后者并不意味着什么。
发布于 2009-03-09 05:51:57
尝试更改此设置:
struct port_data_t *port_data = (struct task_data_t*) calloc(4, sizeof(port_data*));要这样做:
port_data = (struct port_data_t*) calloc(4, sizeof(*port_data));可能会更好一点。如果已经将port_data声明为全局结构,则不需要将其重新声明为struct port_data_t。这一点,GCC应该已经知道了。当然,我会这样做:
port_data = (struct port_data_t*) calloc(4, sizeof(struct port_data_t));但是我不喜欢把变量放在sizeof()中。我试着坚持把类型放在那里,只是出于习惯。此外,它解决了任何关于指针需要如何精确地解除引用的歧义,这在这种情况下会让你犯错。
https://stackoverflow.com/questions/625138
复制相似问题