我对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>
怎么了?
答案 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;。