Qt #include <vector> 错误



我试图在qt中使用std::vector,但我似乎遇到了一些错误。当我包含向量头并编译下面的代码时,我会收到一大堆错误,但当我删除向量头并编辑相同的代码时它会正常工作。

#include <iostream>
#include <vector>
using namespace std;
int main ()
{
  std::cout<<"Vector"<<std::endl;
  return 0;
}

由于有很多错误,我决定把它们放在一个文件中,并提供下面的链接。

http://goo.gl/XOj0nV

构建日志的开始和结束:

12:03:19: Running steps for project vector...
12:03:19: Configuration unchanged, skipping qmake step.
12:03:19: Starting: "/usr/bin/make"
g++ -c -pipe -g -Wall -W -fPIE -I../../Qt/5.3/gcc/mkspecs/linux-g++ -I../vector -I. -o main.o ../vector/
main.cpp
In file included from ../vector/main.cpp:2:0:
./vector:1:1: error: stray '177' in program
./vector:1:1: error: stray '1' in program
./vector:1:1: error: stray '1' in program
./vector:1:1: error: stray '1' in program
./vector:1:8: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '2' in program
./vector:1:18: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '3' in program
./vector:1:20: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '1' in program
./vector:1:22: warning: null character(s) ignored [enabled by default]
./vector:1:1: error: stray '205' in program
./vector:1:1: error: stray '4' in program
./vector:1:1: error: stray '10' in program
./vector:1:30: warning: null character(s) ignored [enabled by default]
[...]
./vector:115:880: warning: null character(s) ignored [enabled by default]
./vector:115:886: warning: null character(s) ignored [enabled by default]
In file included from ../vector/main.cpp:2:0:
File: /home/sanjayan/Documents/qt_vector_errors Page 76 of 76
./vector:1:2: error: 'ELF' does not name a type
In file included from ../vector/main.cpp:2:0:
./vector:28:655: error: 'j' does not name a type
In file included from ../vector/main.cpp:2:0:
./vector:61:28: error: expected declaration before '}' token
make: *** [main.o] Error 1
12:03:22: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project vector (kit: Desktop Qt 5.3 GCC 32bit)
When executing step 'Make'
12:03:22: Elapsed time: 00:03.

我希望所提供的信息足以满足我的查询。

我刚才也遇到了和你一样的问题。我写了一个名为vector.cc 的C++程序

#include <iostream>
#include <vector>
using namespace std;
int main()
{
     cout << "hello" << endl;
     return 0;
}

编译可以第一次通过(使用g++ vector.cc -o vector,创建一个名为vector的可执行文件),然后任何包含语句#include vector的程序都将面临您所说的问题。基本原因是vector文件,如果删除了可执行文件(名为"vector"),一切都会好起来。我希望我的回答能对你有所帮助。

如果不是每个主机都会出现这个问题,那么编译器可能会有所不同。头文件目录扫描顺序可能存在差异。如果标准头目录先于其他头目录进行扫描,则不应出现此类错误。

作为一种变通方法,在生成目标之前手动删除项目目标文件就足够了。但这不是程序员的方式(他们是非常懒惰的生物)。

程序员的方法是学习QMake在项目源编译之前删除目标文件(但在这种方式下,链接阶段将永久完成)。对我来说(Linux下的QMake 2.01a),这是通过在项目文件中添加以下行来实现的:

deltarget.commands = $$QMAKE_DEL_FILE $$TARGET
QMAKE_EXTRA_TARGETS += deltarget
PRE_TARGETDEPS += deltarget

这声明了在当前项目之前构建的目标deltaarget。此示例使用QMake的手动变量QMake_DEL_FILE中未声明的变量,该变量用于删除文件(其内容当然依赖于平台)。

相关内容

最新更新