错误 1 error C2143: 语法错误 : 缺少“;”(在“*”的前面)

#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可以编译通过,我就纳了个闷!

C语言编译时,如果出现了一条新的语句,但是上一语句又没有用分号结尾,就会报这个错误。

比如,在C语言中,要求每种变量定义,必须为一个独立语句,如
int a,b;
char c;
等。
如果写作
int a,b //注意这里少了一个分号。
char c;
在编译的时候就会报这个错误。

不过,编译器给出的建议并不是绝对准确的,有时也会误报,具体如何修改,是否只是在前面一句结尾加上分号就可以,还需要根据代码上下文及其要达到的目的,进行具体分析。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-10
_FARQ *pointer; 感觉是*前面有一个多余空格,所以变成了两个变量吧本回答被网友采纳
第2个回答  2018-04-10
函数内定义函数 ?试试先了VS2015 是不允许函数内再定义函数的。。。。。。。。把函数移到tmain函数的外边吧
第3个回答  2014-10-20
_FARQ 定义为什么了?本回答被提问者采纳
第4个回答  2014-10-11
哪个*号啊。在哪行呀!你在那附近检查了?