Почему OS X определяет «ноль» - PullRequest
2 голосов
/ 28 октября 2008

По крайней мере, проект libsigc ++ 2 поражен заголовками OS X, определяющими nil на уровне препроцессора, вне пространств имен и т. Д. По крайней мере, 10.5.5 и XCode 3.1 имеют это. Обратите внимание, что он действует не только в источниках Objective-C, но и в C ++.

Короткий вопрос: почему?

http://ardour.sourcearchive.com/documentation/2.5/functor__trait_8h-source.html

p.s. Я также помню nil из Objective-C. Но я не вижу оправдания такого тупого (imho) определения для других языков, затрагивающего код, который вообще не имеет ничего общего с Objective-C (например, проекты на чистом C ++).

1 Ответ

1 голос
/ 05 января 2009

Я использую 10.5.6 и XCode 3.1.2. Я просто попытался использовать nil в моем чистом проекте cpp, но он не был определен:

main.cpp:41: error: 'nil' was not declared in this scope

Я предполагаю, что ваш проект каким-то образом включает Какао или другую библиотеку Objective-C. Возможно, ваш код компилируется как Objective-C ++? Он может компилировать любую комбинацию C ++ и Objective-C, так что существующий код C ++ может компилироваться. Это значение по умолчанию для файлов с расширением .mm.

Вы создали проект XCode для этой библиотеки? Если это так, возможно, он использует префиксный заголовок XCode, который поставляется с шаблоном Framework, который включает в себя Cocoa / Cocoa.h. Проверьте опцию «Заголовок префикса» в проекте и информацию о цели.

Я также просмотрел / usr / include и не нашел ни одного экземпляра #define nil.

[Редактировать: файл .h, на который вы ссылались, может #undef nil, поскольку его также можно использовать из Objective-C ++.]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...