gpt4 book ai didi

c++ - 为什么 OS X 定义 'nil'

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:43 26 4
gpt4 key购买 nike

至少 libsigc++2 项目受到 OS X header 的影响,该 header 在预处理器级别、 namespace 之外等定义了 nil。至少 10.5.5 和 XCode 3.1 具有此功能。请注意,它不仅在 Objective-C 源代码中有效,而且在 C++ 中也有效。

简短的问题:为什么?

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

附注我还记得 Objective-C 中的 nil。但是我没有看到为其他语言定义这种直截了当的(恕我直言)的理由,影响与 Objective-C 完全无关的代码(s.a. 纯 C++ 项目)。

最佳答案

我使用的是 10.5.6 和 XCode 3.1.2。我刚刚尝试在我的纯 cpp 项目上使用 nil,但它没有被定义:

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

我的猜测是您的项目以某种方式包含 Cocoa 或其他 Objective-C 库。也许您的代码被编译为 Objective-C++?它可以编译 C++ 和 Objective-C 的任意组合,因此可以编译现有的 C++ 代码。这是扩展名为 .mm 的文件的默认设置。

您是否为此库创建了 XCode 项目?如果是这样,也许它正在使用 Framework 模板附带的 XCode 前缀 header ,其中包括 Cocoa/Cocoa.h。检查项目和目标信息中的“Prefix Header”选项。

我还搜索了/usr/include,但没有找到任何 #define nil 的实例。

[编辑:您链接到的 .h 文件可能 #undef nil 因为它也可以在 Objective-C++ 中使用。]

关于c++ - 为什么 OS X 定义 'nil',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/244499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com