use*_*855 1 c++ compiler-errors
问题解决了!非常感谢建设性的建议!
我无法弄清楚以下代码中的错误.我做的方式有什么问题吗?
// This is utils.h
#ifndef UTILS_H
#define UTILS_H
#include <iostream>
#include <fstream>
#include <stack>
#include <queue>
#include <vector>
#include <list>
#include <string>
#include <algorithm>
typedef pair<int,int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<vii> vvii;
typedef stack<int> si;
typedef queue<int> qi;
#define tr(c,i) for(typeof((c).begin()) i = (c).begin() ; i!=(c).end() ; ++i )
#define all(c) (c).begin(),(c).end()
#define cpresent(c,x) (find(all(c),x) != (c).end())
#endif
// ==============================================================
// Below is main.cpp
#include "utils.h"
int main() {
vi v;
}
Run Code Online (Sandbox Code Playgroud)
在编译"g ++ main.cpp"时,我收到以下错误消息:
utils.h:13:错误:在'''之前的预期初始化者:utils.h:14:错误:在'''之前的期望初始化者:utils.h:15:错误:在'''之前的期望初始化者:utils.h:16 :错误:在'''之前的期望初始化者:utils.h:17:错误:在'''之前的期望初始化者:utils.h:18:错误:在'''之前的期望初始化者#inmain main1.cpp:在函数'int main( )':main1.cpp:4:错误:'vi'未在此范围main1.cpp中声明:4:错误:预期`;' 'v'之前
这段代码有什么问题?当我没有#ifndefs时,utils.h曾经工作过一段时间.
这些类型(pair,stack,queue,vector,等)都在std命名空间.您需要using namespace std;在文件顶部添加(通常在所有标准库包含之后)或通过std::在它们前面添加完全限定类型名称.
通常,最好完全限定类型名称,而不是使用它using namespace来避免名称之间的潜在冲突并使代码更清晰.你永远不应该using namespace std在头文件中使用.
(沿着干净的代码行,你应该考虑使用更好,更长的名称为您的类型; ii,vii和vvii是残暴的类型名称).
| 归档时间: |
|
| 查看次数: |
2784 次 |
| 最近记录: |