首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

error C2146: 语法异常 : 缺少“;”(在标识符“Lang”的前面) error C2501: “Lang” : 缺少存储类或类型说明符

2013-02-17 
error C2146: 语法错误 : 缺少“”(在标识符“Lang”的前面) error C2501: “Lang” : 缺少存储类或类型说明符

error C2146: 语法错误 : 缺少“;”(在标识符“Lang”的前面) error C2501: “Lang” : 缺少存储类或类型说明符
为什么老报这个错误 网上查是头文件包含错误 可我这个就是头文件啊 代码如下:



#pragma once
#include <vector>
#include <string>

#ifdef UNICODE
#define tstring std::wstring
#else 
#define tstring std::string
#endif

#ifdef _TAGLANGSTRUCT_H
#define _TAGLANGSTRUCT_H

typedef struct tagLangStruct
{
TCHAR strLangName[256];
TCHAR strFileName[256];
}LangStruct;

#endif

#ifdef _CLANGUAGEMANAGER_H
#define _CLANGUAGEMANAGER_H

class CLanguageManager
{
public:
CLanguageManager(void);
~CLanguageManager(void);
int EnumAll(void);
LPCTSTR  GetString(LPCTSTR  strID);
voidGetLangList(std::vector<tstring>& listLangName);
protected:
std::vector<LangStruct> m_listLang;
TCHAR  m_strSelLang[256];
TCHAR  m_strBuffer[512];
public:
int SetSel(LPCTSTR strSelLang);
int SetSel(int nSelLang);
};

#endif

extern CLanguageManager Lang;



[解决办法]
全局数据放cpp文件中试试,记得包含该头文件
[解决办法]
#pragma once
#include <vector>
#include <string>

#ifdef UNICODE
#define tstring std::wstring
#else 
#define tstring std::string
#endif

#ifndef _TAGLANGSTRUCT_H
#define _TAGLANGSTRUCT_H

typedef struct tagLangStruct
{
TCHAR strLangName[256];
TCHAR strFileName[256];
}LangStruct;

#endif

#ifndef _CLANGUAGEMANAGER_H
#define _CLANGUAGEMANAGER_H

class CLanguageManager
{
public:
CLanguageManager(void);
~CLanguageManager(void);
int EnumAll(void);
LPCTSTR  GetString(LPCTSTR  strID);
voidGetLangList(std::vector<tstring>& listLangName);
protected:
std::vector<LangStruct> m_listLang;
TCHAR  m_strSelLang[256];
TCHAR  m_strBuffer[512];
public:
int SetSel(LPCTSTR strSelLang);
int SetSel(int nSelLang);
};

#endif

extern CLanguageManager Lang;

[解决办法]
你这么写 不错才怪#ifdef _CLANGUAGEMANAGER_H 
#define _CLANGUAGEMANAGER_H 
[解决办法]
我发的那个 已经改过  编译没错 可以运行  
[解决办法]
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。

热点排行