在C ++上包含C代码奇怪的错误

时间:2014-01-16 03:14:27

标签: c++ c eclipse include

我正在尝试在c ++代码上使用一些C函数(由我制作)。 我正在使用Eclipse。

Main.cpp代码:

#include <Windows.h>
extern "C" {
   #include "f.h"
}
int main(){
   return 1;
}

现在f.h有很多函数,但是它给出了有关这个初始化行的错误。 所以我的f.h代码只有这个:

char o[9] = "00000000\0";

但是...

initializer-string for array of chars is too long   f.h

如果我在C中编译它会起作用......为什么?

4 个答案:

答案 0 :(得分:1)

尝试将十个字符复制到一个已定义为9个字符长的数组中。

尝试:

char o[9] = "00000000";

最后它已经有一个空字符。或者让编译器进行计数。即

char o[] = "00000000";

答案 1 :(得分:0)

没有必要显式写\ 0,如果你用双引号括起来,它被视为NULL终止字符串。

答案 2 :(得分:0)

原因是,c-string会自动在末尾添加'\ 0'。所以,

"00000000\0"

实内存表示为“00000000 \ 0 \ 0”,即10个字节。

答案 3 :(得分:-1)

你告诉编译器你会提供9个字符,而你只提供8个字符,只是因为计算字符时空字符不计算。

char o[8] = "00000000\0";

试试吧。这也可能有效。

char o[8] = "00000000";