编译g++文件时出现错误 - "#include expects "FILENAME" or <FILENAME>"。

3

我是一个新手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>

有什么问题吗?


11
你使用的是“”而不是标准的双引号"`。 - DCoder
2
我的老师总是把东西放在格式化的Word文档中,这让我很烦。 - chris
1
@chris 现在就离开那个老师。 - user529758
@H2CO3,他还不错。那只是他的一个让人烦恼的习惯。这不是代码问题,而是图表应该均匀分布的问题。此外,我已经完成了我们学校唯一的真正编程课程。 - chris
1
我简直无法相信有人会在Word中编辑代码,这太不对了。 - john
3个回答

12

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

#include "recip.hpp"

使用标准的双引号。


3

您的第一行,作为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代码的编辑器。


1

开始使用 SWIG 当 Wei 构建示例时。

example_wrap.c:2948:10: 错误:#include 期望 "FILENAME" 或

/* 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); 

这只是一个包含“双引号”的例子。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接