struct并不报错

1 struct {
2 int item;
3 struct list* next;
4 }list;

如果结构体定义如上,使用下面的代码,将会报错

//添加元素,由于我们实现的是单向链表,所以使用从尾部添加
bool AddItem(int a,struct list *plist)
{
	struct list *pNew;
	struct list *pNode;
	pNode=plist;
	pNew=malloc(sizeof( struct  list));
	if(pNew==NULL)
	{
		return false;
	}
	pNew->item=a;
	pNew->next=NULL;
	if(pNode==NULL)
	{
		plist=pNew;
	}else
	{
		while(pNode->next!=NULL)
		{
			pNode=pNode->next;
		}
		pNode->next=pNew;
	}
	return true;
}

  

c30.c: In function ‘AddItem‘:
c30.c:30:22: error: invalid application of ‘sizeof‘ to incomplete type ‘struct list‘
pNew=malloc(sizeof( struct list));
^
c30.c:35:6: error: dereferencing pointer to incomplete type
pNew->item=a;
^

其报错并不在struct处,而是在其使用处。

这是因为结构体定义有问题。

时间: 2024-10-14 06:16:49

struct并不报错的相关文章

报错storage size of ‘act’ isn’t known当使用std=c99编译struct sigaction

问题 今天在学习进程间通信之-信号signal–linux内核剖析(九) 遇见了一个奇怪的问题 storage size of 'oldact' isn't known 于是FQ去google之. 分析了好久,终于发现问题的原因了.于是记录下来 发现 测试的代码如下 #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <bits/sigaction.h> int main()

VC中编译报错:error C2011: &#39;fd_set&#39; : &#39;struct&#39; type redefinition

这是头文件包含顺序的问题,原因与解决办法见下面代码的注释. /* 包含下面这两个头文件时,必须把winsock2.h放在前面 否则编译报错,N多的重定义错误:例如 error C2011: 'fd_set' : 'struct' type redefinition */ #include <WinSock2.h> #include <Windows.h> int main(int argc, _TCHAR* argv[]) { Sleep(1); return 0; } 其实可以不

php5.6.11编译安装报错configure: error: Don&#39;t know how to define struct flock on this system

centos 6.8 32位系统下,安装php.5.6.11是出现这个错误 解决办法: 1 2 3 4 vim /etc/ld.so.conf.d/local.conf     # 编辑库文件 /usr/local/lib                       # 添加该行 :wq                                  # 保存退出 ldconfig -v                          # 使之生效 注意事项: 这里添加的库文件路径一定要和你

气死人不偿命,Q_OBJECT导致的C++报错,而且还看不明白

为了代码可以同时适应VC++和MingW编译器,我改动了我的代码,变成: #ifdef _MSC_VER #pragma comment(lib, "crypt32.lib") // Link OK,Linux 也要附带这两个库,格式是 -lcrypt32 -lws2_32 #pragma comment(lib, "ws2_32.lib") // Link OK //#pragma comment(lib, "dnsapi.lib") // 没

cocos2d-x 头文件中添加方法变量导致编译报错

代码如下: HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h"class HelloWorld : public cocos2d::Layer{public:    // there's no 'id' in cpp, so we recommend returning the class instance pointer    stati

关于编译报错“dereferencing pointer to incomplete type...

今天同事问了我一个问题,他make的时候报错,“第201行:dereferencing pointer to incomplete type”,我随即查阅了很多资料,也没看出个所以然.最后问题得到了解决,也懂得了原理,遂记录一下. 他的问题具体是这样. ? 1 2 3 4 5 6 #include <netinet/ip_icmp.h> ... struct icmp* aaa;     aaa = (struct icmp*)malloc(sizeof(struct icmp)); //假设

nginx编译安装nginx-sticky-module报错

报错如下: /usr/local/nginx-sticky-module-1.1/nginx-sticky-module-1.1/ngx_http_sticky_misc.c: In function 'ngx_http_sticky_misc_text_raw': /usr/local/nginx-sticky-module-1.1/nginx-sticky-module-1.1/ngx_http_sticky_misc.c:281:2: error: passing argument 2 o

Linux编程报错

学习<Linux编程第四版>时遇到问题: 报错: 错误:'sem_union'的存储大小未知 原因: Linux 2.6版内核union sem_union 联合体已被注释 解决方法: 重新定义sem_union union semun{    int val;    struct semid_ds *buf;    unsigned short *array;    struct seminfo *__buf;};

安装STS报错(三)

this指针只能在一个类的成员函数中调用,它表示当前对象的地址.下面是一个例子: void Date::setMonth( int mn ) { month = mn; // 这三句是等价的 this->month = mn; (*this).month = mn; } 1. this只能在成员函数中使用. 全局函数,静态函数都不能使用this. 实际上,成员函数默认第一个参数为T* const register this. 如: class A{public: int func(int p){