Я создал свой собственный исходный файл, и я пытаюсь добавить stddef.h. При компиляции я имею следующую ошибку:<stddef.h> std :: ptrdiff_t 'не был объявлен
std::ptrdiff_t' has not been declared.
Что я сделал не так?
Я создал свой собственный исходный файл, и я пытаюсь добавить stddef.h. При компиляции я имею следующую ошибку:<stddef.h> std :: ptrdiff_t 'не был объявлен
std::ptrdiff_t' has not been declared.
Что я сделал не так?
Проблема заключается в том, что вы включаете в себя стандарт C заголовок, а не стандартный заголовок C++.
Стандартный заголовок C не будет помещать свои символы в пространство имен std
, так как C не имеет таких вещей.
что у вас есть другие приложения, требующие заголовка C не имеет значения, если вы хотите использовать ptrdiff_t
типа-псевдоним из пространства имен C++ std
, вы должны включить <cstddef>
.
Или прекратите использование std::ptrdiff_t
, а пользователь - неквалифицированный и глобальный ptrdiff_t
от <stddef.h>
.
@ infernalcucumber Да. –
Я знаю, я новичок в программировании, но вы имеете в виду, что если я включу
У меня есть
Ну, я полагаю, я нашел решение. Я создал новые исходные файлы .cpp и .h и использовал эти библиотеки в них. Возможно, были некоторые проблемы с включением моих собственных библиотек, и компоновщик не видит cstddef правильно.
Вы пытались включить [''] (http://en.cppreference.com/w/cpp/header/cstddef) вместо этого? –
Заголовки C не заполняют пространство имен 'std'. – juanchopanza
@Joachim Pileborg, да, я попытался включить cstddef, но мне нужны библиотеки в моем проекте от кодера simlink от matlab, для чего требуется stddef.h .... – infernalcucumber