错误的 STL 标头
Posted
技术标签:
【中文标题】错误的 STL 标头【英文标题】:Bad STL Headers 【发布时间】:2011-12-04 05:51:02 【问题描述】:我想做一些 STL 集,但是当我这样做时告诉我
error C2143: syntax error : missing ';' before '<'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2238: unexpected token(s) preceding ';'
意思是我没有包含正确的标题定义 (#define <set>
) 但我有。套装是否位于不同的位置?源码是这样的
set<int> playerlist;
头文件是...
#include <iostream>
//#include "winsock2.h"
#include "Ws2tcpip.h"
#include <list>
//#include <windows.h>
#include <process.h>
#include <stdio.h>
#include <string>
#include <fstream>
#include <map>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
#include <set>
【问题讨论】:
你做了using namespace std;
吗?您需要从命名空间中指定它。 std::set<int>
也可以。
¤ 确保您#include <set>
。请注意,预处理器指令是 #include
,而不是 #define
。然后要么编写合格的std::set
而不是普通的set
,或者使用using namespace std
或using std::set
指令。干杯&hth,
我正在使用 std,我尝试了 std::set你需要的是
#include <set>
而不是
#define <set>
在使用 set 之前,在你的 main 函数之前写下下面一行
using namespace std;
【讨论】:
【参考方案2】:由
#define <set>
我希望你的意思
#include <set>
?
您还需要以某种方式表明您想要来自std
命名空间的set
。您可以通过在您引用它的任何地方为 set
加上 std::
前缀来做到这一点:
set<int> playerlist;
或者通过使用using
声明告诉编译器,每当您引用set
时,您的意思是std::set
:
using std::set;
(也可以编写一个包罗万象的using namespace std;
声明,表示您总是想使用std
命名空间中的所有内容,但这通常被认为是不好的做法。我之所以提到它只是因为,尽管这是不好的做法,这是相当普遍的,所以你很可能会遇到这样做的代码。)
【讨论】:
以上是关于错误的 STL 标头的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不断收到“错误 [ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头”错误?