错误 - 编译g ++文件</filename>时“#include期望”FILENAME“或<filename>”

时间:2012-09-09 04:46:18

标签: c++ g++

我对Linux编程很陌生。 我正在使用g++编译一个简单的C ++代码:

#include“recip.hpp”
#include<cassert>

double recip (int i) {
// I should be non-zero.
assert (i != 0);
return 1.0/i;
}

我当前目录中存在recip.hpp文件。我不明白为什么我会收到错误:

recip.cpp:1:9: error: #include expects "FILENAME" or <FILENAME>

怎么了?

3 个答案:

答案 0 :(得分:9)

编译器不是文本编辑器,也不是人类 - 它检查确切的字符代码匹配,而不是视觉相似性......你必须使用

#include "recip.hpp"

使用标准双引号。

答案 1 :(得分:1)

你的第一行,被视为UTF-8,读作:

0x23 = U+0023
0x69 = U+0069
0x6E = U+006E
0x63 = U+0063
0x6C = U+006C
0x75 = U+0075
0x64 = U+0064
0x65 = U+0065
0xE2 0x80 0x9C = U+201C
0x72 = U+0072
0x65 = U+0065
0x63 = U+0063
0x69 = U+0069
0x70 = U+0070
0x2E = U+002E
0x68 = U+0068
0x70 = U+0070
0x70 = U+0070
0xE2 0x80 0x9D = U+201D
0x0A = U+000A

U + 201C和U + 201D需要用U + 0022(ASCII 34)或"代替。

MS Word和其他文字处理程序为C代码编写错误的编辑器。

答案 2 :(得分:0)

开始swig 当wei构建example.i。

example_wrap.c:2948:10:错误:#include expect&#34; FILENAME&#34;或

/* File: example.i */
%module example
%{
#define SWIG_FILE_WITH_INIT
#include 'example.h'
%}
int fact(int n);

我们改变代码:

/* File: example.i */
%module example

%{ 
#define SWIG_FILE_WITH_INIT
#include "example.h"
%}
int fact(int n); 

只是在包含&#39;双引号&#39;。