我遇到了问题。当我尝试构建以下代码时,我得到:
'keywords' does not name a type
...
'whitespace' does not name a type
第18-19和22-24行。有人可以帮忙吗?这是代码。
/*
* cpp2html.h
*
* Created on: Mar 6, 2014
* Author: vik2015
*/
#ifndef CPP2HTML_H
#define CPP2HTML_H
#include <string>
#include <vector>
#define VERSION "0.1a"
using namespace std;
vector<string> keywords;
keywords.push_back("for");
keywords.push_back("white");
vector<string> whitespace;
whitespace.push_back("\n");
whitespace.push_back("\t");
whitespace.push_back(" ");
#endif
答案 0 :(得分:4)
你不能在全局范围内拥有任意表达式(例如函数调用),只允许你的声明。
您对push_back
的来电必须在函数中,可能在main
。或者,如果要在定义这些对象时初始化这些对象,可以在C ++ 11中执行此操作:
std::vector<std::string> keywords{ "for", "white" };
或者在C ++ 03中:
inline std::vector<std::string> getKeywords()
{
std::vector<std::string> keywords;
keywords.push_back("for");
keywords.push_back("white");
return keywords;
};
std::vector<std::string> keywords = getKeywords();
此外,永远不要将using namespace std;
放在标题中。它会影响包含标题的所有代码,即使该代码不需要使用using指令。