Я должен вернуть nul в функции, но мне не разрешено включать какую-либо библиотеку. Я попытался найти, как определяется NULL, а затем sys/_types/_null.h только для того, чтобы найти, что NULL на самом деле __DARWIN_NULL. Большой ! Теперь я не знаю, где искать, чтобы найти определение __DARWIN_NULL ...где __DARWIN_NULL определение макроса?
ответ
Я должен вернуть nul в функции, но мне не разрешено включать какую-либо библиотеку.
Решение этой проблемы намного проще, чем вы ее делаете; вы действительно попросили форму XY problem.
Вы не найдете символ NUL, определенный в любой стандартной библиотеке; лучший способ возврата, который будет использовать константу '\0'
или 0
.
Если ваш преподаватель учит вас избегать использования <stddef.h>
, чтобы найти NULL
, тогда он/она установил глупые упражнения, которые предполагают использование чего-то другого, кроме самого подходящего инструмента для задания, инструмент, гарантированный стандартом для существования , кстати ... я бы поднял это как проблему.
Тем не менее, иногда профессора не заботятся и научат вас делать глупые вещи. NULL
определяется как константа нулевого указателя, определяемая реализацией, обычно 0
или преобразование 0
в void *
следующим образом: ((void *) 0)
. Это может быть не определенное реализацией значение, которое разрешает ваш NULL
; в этом случае отрегулируйте в соответствии с требованиями:
Вы можете добавить определение препроцессора, например #define NULL ((void *) 0)
, а затем вы сможете использовать функции return NULL;
. Та-да! Глупые упражнения заслуживают глупых решений.
Если ваш профессор говорит, что вам запрещено использовать #define
, то у меня возникнет соблазн спросить его, что вам разрешено использовать . Изменение требований «на лету» несправедливо. Большинство компиляторов позволят вам установить константы препроцессора, используя аргумент командной строки, например cc -DNULL='((void *) 0) ...'
. Это полезно для отображения параметров конфигурации времени компиляции, но опять же, используя эту опцию для определения NULL
, это глупо.
Вопрос в вашем названии отличается от остальной части вашего сообщения. __DARWIN_NULL
также можно определить с использованием любого из вышеперечисленных, если оно еще не определено, но я действительно не думаю, что это необходимо для ответа на ваш реальный вопрос.
- 1. Определение макроса макроса
- 2. Определение макроса в C
- 3. определение макроса объекта
- 4. определение макроса в javascript
- 5. пытаясь понять определение макроса
- 6. Развернуть определение макроса с включением макроса
- 7. Где определение макроса «gettarget» в файле Android .xml
- 8. Определение вызывающей линии без макроса
- 9. Определение макроса на C++ неясно
- 10. Определение макроса в кросс-платформе
- 11. Определение макроса для определения функций
- 12. определение макроса, содержащее директиву #include
- 13. MSVC _M_X64 Предопределенное определение макроса
- 14. комментарии в c определение макроса
- 15. Определение макроса для вычисления многочлена
- 16. Определение макроса на C++ без знака фунта
- 17. передать определение макроса функции, ссылаясь на аргумент
- 18. Определение макроса улучшение синтаксиса конкретной функции
- 19. SAS- Определение разрывов страниц внутри макроса
- 20. Повторное использование/инкрементное определение макроса C?
- 21. Определение константных переменных с помощью макроса C
- 22. ошибка: ожидаемый идентификатор или '(' before, определение макроса
- 23. Определение динамической функции с помощью макроса
- 24. Проверьте определение макроса с помощью строк
- 25. Как переписать определение макроса в CMake
- 26. Определение глобального макроса в C++ для проекта
- 27. Определение минимально возможного размера макроса в C
- 28. C строка, чтобы сохранить определение макроса
- 29. Определение макроса на начальном этапе открытия SAS
- 30. Как добавить определение макроса в cmake?
Возможный дубликат http://stackoverflow.com/questions/18781514/correct-way-of-defining-null-and-null-pointer – Ari0nhh
AFAIK, '__DARWIN_NULL' является встроенным компилятором, поэтому вы выиграли ' t найти его в любом файле заголовка. – user3386109
Неясно, нужен ли вам символ 'nul' или указатель' NULL'. Какой бы вы ни вернули 0'. –