2016-09-29 2 views
-3

Я создал свой собственный исходный файл, и я пытаюсь добавить stddef.h. При компиляции я имею следующую ошибку:<stddef.h> std :: ptrdiff_t 'не был объявлен

std::ptrdiff_t' has not been declared.

Что я сделал не так?

+4

Вы пытались включить [''] (http://en.cppreference.com/w/cpp/header/cstddef) вместо этого? –

+3

Заголовки C не заполняют пространство имен 'std'. – juanchopanza

+0

@Joachim Pileborg, да, я попытался включить cstddef, но мне нужны библиотеки в моем проекте от кодера simlink от matlab, для чего требуется stddef.h .... – infernalcucumber

ответ

1

Проблема заключается в том, что вы включаете в себя стандарт C заголовок, а не стандартный заголовок C++.

Стандартный заголовок C не будет помещать свои символы в пространство имен std, так как C не имеет таких вещей.

что у вас есть другие приложения, требующие заголовка C не имеет значения, если вы хотите использовать ptrdiff_t типа-псевдоним из пространства имен C++ std, вы должны включить <cstddef>.

Или прекратите использование std::ptrdiff_t, а пользователь - неквалифицированный и глобальный ptrdiff_t от <stddef.h>.

+0

@ infernalcucumber Да. –

+0

Я знаю, я новичок в программировании, но вы имеете в виду, что если я включу , он должен корректно работать с библиотеками, для которых требуется stddef.h? – infernalcucumber

+0

У меня есть вместо , но когда я включаю библиотеки, созданные из кодов Simulink от Matlab, при компиляции снова появляется следующая ошибка: 'std :: ptrdiff_t' не объявлен \t строка 72, внешнее местоположение: D : \ QNX650 \ цель \ QNX6 \ USR \ включать \ stddef.h – infernalcucumber

0

Ну, я полагаю, я нашел решение. Я создал новые исходные файлы .cpp и .h и использовал эти библиотеки в них. Возможно, были некоторые проблемы с включением моих собственных библиотек, и компоновщик не видит cstddef правильно.

Смежные вопросы