错误 1 error C2143: 语法错误 : 缺少“;”(在“*”的前面)
#ifndef_MHFS_MALLOC_HEADER_#define_MHFS_MALLOC_HEADER_#include<xmemory>#include"MHFSG...
#ifndef _MHFS_MALLOC_HEADER_
#define _MHFS_MALLOC_HEADER_
#include <xmemory>
#include "MHFSGlobalObject.hpp"
class MHFSNETWORK_API MHFSMalloc
{
public:
virtual ~MHFSMalloc(void);
virtual void* malloc(size_t sz) = 0;
virtual void free(void* p) = 0;
};
template<class _Ty>
class MHFSSTLAllocator : public std::_Allocator_base<_Ty>
{ // generic allocator for objects of class _Ty
public:
typedef _Allocator_base<_Ty> _Mybase;
typedef typename _Mybase::value_type value_type;
typedef value_type _FARQ *pointer; //这里出错
typedef value_type _FARQ& reference;
typedef const value_type _FARQ *const_pointer; //这里出错
typedef const value_type _FARQ& const_reference;
typedef _SIZT size_type;
typedef _PDFT difference_type;
template<class _Other>
struct rebind
{ // convert an allocator<_Ty> to an allocator <_Other>
typedef MHFSSTLAllocator<_Other> other;
};
pointer address(reference _Val) const
{ // return address of mutable _Val
return (&_Val);
}
……
……
……
VS2013不能编译通过,
VS2008可以编译通过,我就纳了个闷! 展开
#define _MHFS_MALLOC_HEADER_
#include <xmemory>
#include "MHFSGlobalObject.hpp"
class MHFSNETWORK_API MHFSMalloc
{
public:
virtual ~MHFSMalloc(void);
virtual void* malloc(size_t sz) = 0;
virtual void free(void* p) = 0;
};
template<class _Ty>
class MHFSSTLAllocator : public std::_Allocator_base<_Ty>
{ // generic allocator for objects of class _Ty
public:
typedef _Allocator_base<_Ty> _Mybase;
typedef typename _Mybase::value_type value_type;
typedef value_type _FARQ *pointer; //这里出错
typedef value_type _FARQ& reference;
typedef const value_type _FARQ *const_pointer; //这里出错
typedef const value_type _FARQ& const_reference;
typedef _SIZT size_type;
typedef _PDFT difference_type;
template<class _Other>
struct rebind
{ // convert an allocator<_Ty> to an allocator <_Other>
typedef MHFSSTLAllocator<_Other> other;
};
pointer address(reference _Val) const
{ // return address of mutable _Val
return (&_Val);
}
……
……
……
VS2013不能编译通过,
VS2008可以编译通过,我就纳了个闷! 展开
5个回答
展开全部
C语言编译时,如果出现了一条新的语句,但是上一语句又没有用分号结尾,就会报这个错误。
比如,在C语言中,要求每种变量定义,必须为一个独立语句,如
int a,b;
char c;
等。
如果写作
int a,b //注意这里少了一个分号。
char c;
在编译的时候就会报这个错误。
不过,编译器给出的建议并不是绝对准确的,有时也会误报,具体如何修改,是否只是在前面一句结尾加上分号就可以,还需要根据代码上下文及其要达到的目的,进行具体分析。
比如,在C语言中,要求每种变量定义,必须为一个独立语句,如
int a,b;
char c;
等。
如果写作
int a,b //注意这里少了一个分号。
char c;
在编译的时候就会报这个错误。
不过,编译器给出的建议并不是绝对准确的,有时也会误报,具体如何修改,是否只是在前面一句结尾加上分号就可以,还需要根据代码上下文及其要达到的目的,进行具体分析。
展开全部
_FARQ *pointer; 感觉是*前面有一个多余空格,所以变成了两个变量吧
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数内定义函数 ?试试先了VS2015 是不允许函数内再定义函数的。。。。。。。。把函数移到tmain函数的外边吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
_FARQ 定义为什么了?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哪个*号啊。在哪行呀!你在那附近检查了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询