我正在尝试在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中编译它会起作用......为什么?
答案 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";