VS2010 C++ 项目编译常见问题搜集----error C2143: syntax error : missing ';' before '*'

VS2010 C++项目编译时遇到error C2143错误,原因是头文件#include顺序不正确。错误出现在';'缺失的位置,通过调整头文件的包含顺序或在类定义前声明引用的类成员可以解决问题。
摘要由CSDN通过智能技术生成

此问题困扰我了很久,在网上大致查找了下相关说明。目前定位问题与定义的include的顺序有关

比如我在头文件定义集成的头文件中有如下定义

sdafx.h

#include "test.h"
#include "another.h"

test.h

#include "sdafx.h"

class test
{
    test();
};


another.h

#include "sdafx.h"

class another
{
  test *p;
  another();
};

这样是没有问题的,因为在sdafx.h中,编译时预先载入了test类,以至another类在引用test类型指针时可以找到对应的内存结构。


但是如果我们把include顺序调转过来,编译时就会出现 error C2143: syntax error : missing ';' before '*'错误


解决方式

一,整理include的头文件顺序

二,如果目标类中引用的类对象过多,可以在类定义前声明要引用的类成员。

#include "sdafx.h"
class test;
class another
{
  test *p;
  another();
};



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值