【问题标题】:When is it okay to create 'reserved' identifiers?什么时候可以创建“保留”标识符?
【发布时间】:2020-04-15 08:17:04
【问题描述】:

我认为学习和改进编程的最佳方法之一就是查看各种源代码。我正在查看 Blender 的源代码,并注意到一些关于头文件的内容。他们中的大多数使用#ifndef 包括守卫,其中宏被双下划线包围(例如__BMESH_CLASS_H__)。

这让我开始思考,整个“不要做任何以下划线开头的东西”的建议对初学者都有好处,但我认为为了在编程中进一步进步,我应该在创建自己的保留时学习标识符合适和不合适

【问题讨论】:

标签: c++ c


【解决方案1】:

我认为,为了在编程中取得进一步进展,我应该在创建自己的保留标识符时学习是和不合适的

保留标识符为实现保留,大​​致意思是编译器、它的运行时库,也可能是操作系统的一部分。

因此,当您的进步导致您编写自己的编译器或操作系统时,创建自己的编译器或操作系统是合适的。差不多就这些了。

【讨论】:

    【解决方案2】:

    据我所知,只有一种情况是允许自制的保留标识符。所有其他行为都被认为是未定义的行为,虽然它们很可能仍会完全一样地工作,但这违反了标准,不应该这样做。

    也就是说,您可以在与开发环境的某些组件交互时创建保留标识符。例如,某些编译器可能支持__FILE_NAME__ 之类的东西,而其他编译器可能不支持,甚至可能因编译器版本而异。如果您自己制作它是为了向后兼容(即添加预处理器定义来定义所述宏),那么它是 100% 可以的,只要它的实现遵循准确使用所述标识符的要求(例如它应替换为__FILE_NAME__ 的文件名,而不是其他)。

    【讨论】:

    • 我不会在当前未定义 __FILE_NAME__ 的平台上定义它。我会有条件地将FILE_NAME 定义为__FILE_NAME__(如果可用),否则将使用解决方法。
    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 2020-07-05
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2013-03-16
    • 1970-01-01
    相关资源
    最近更新 更多