Я пытаюсь использовать некоторые C-функции (сделанные мной) в коде c++. Я использую Eclipse.
Код Main.cpp:
#include <Windows.h>
extern "C" {
#include "f.h"
}
int main(){
return 1;
}
Теперь у меня много функций, но это дает мне ошибку на тех, у которых есть эта строка инициализации. Таким образом, мой fh
код:
char o[9] = "00000000\0";
Но...
initializer-string for array of chars is too long f.h
если я скомпилирую его в C Это будет работать... почему?
Он пытается скопировать десять символов в массив, который вы определили как 9 символов.
Пытаться:
char o[9] = "00000000";
он уже имеет нулевой символ в конце. Или попросите компилятор выполнить подсчет. то есть.
char o[] = "00000000";
Вы сказали компилятору, что вы предоставите ему 9 символов, вместо этого вы предоставили только 8, просто потому, что нулевой символ не учитывается при подсчете символов.
char o[8] = "00000000\0";
Попробуй это. Это также может работать.
char o[8] = "00000000";
Причина в том, что c-строка автоматически добавит '\ 0' в конце. Так,
"00000000\0"
Реальное представление памяти "00000000\0\0", которое составляет 10 байтов.
Нет необходимости явно писать \0, если вы заключаете в двойные кавычки, она обрабатывается как строка с нулевым завершением.
char
в C и инициализируете его именно таким количеством символов, к строке не добавляется 0-терминатор. Я не знаю, как обстоят дела в C ++, но я знаю, что это действительно C.