2

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

#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>

怎么了?

4

3 回答 3

11

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

#include "recip.hpp"

使用标准双引号。

于 2012-09-09T04:49:31.320 回答
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 代码制作了糟糕的编辑器。

于 2012-09-09T04:56:50.953 回答
1

当 wei 构建 example.i 时开始 swig。

example_wrap.c:2948:10:错误:#include 需要“文件名”或

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

它只是包含“双引号”。

于 2016-02-18T02:15:13.127 回答