首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stdatomic.h的名称是否与映射到周期之前的8个重要字符的(潜在)限制相矛盾?

stdatomic.h的名称是否与映射到周期之前的8个重要字符的(潜在)限制相矛盾?
EN

Stack Overflow用户
提问于 2021-02-23 16:09:38
回答 2查看 123关注 0票数 4

ISO/IEC 9899:2011 (E):

6.10.2.5

实现可能忽略字母大小写的区分,并将映射限制为周期前的八个重要字符。

由于stdatomic.h在周期前有9个字符,它是否与上面的(潜在)限制相矛盾?也就是说,某些实现在使用stdatomic.h和(例如) stdatomix.h作为#include指令的参数时不会区分它们?

额外问题:为什么stdatomic.h而不是atomic.h

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-23 18:48:32

实现可能忽略字母大小写的区分,并将映射限制为周期前的8个重要字符。由于stdatomic.h在周期前有9个字符,它是否与上述(潜在)限制相矛盾?

不,因为虽然它使用了“限制”一词,但它并不是对语言或实现的限制。这是一种赋予实现的自由。

,即某些实现在使用stdatomic.h作为#include指令的参数时不会区分stdatomic.h和stdatomx.h?

如果实现不将这两者区分为包含文件名,则不会使其在任何方面都不符合。该标准指定了包含表单指令的特殊意义。

代码语言:javascript
复制
#include <stdatomic.h>

。只要实现承认该指令并赋予其所需的意义,则对于标准来说,无论是哪种情况,都没有任何意义。

代码语言:javascript
复制
#include <stdatomix.h>

也被赋予同样的意义。

额外的问题:为什么是stdatomic.h而不是原子?

在标准库标头的名称前加上"std“是一种常见的约定,尽管不是普遍遵守的约定。其他例子包括stdalign.hstdarg.hstdbool.hstddef.hstdint.hstdio.hstdlib.hstdnoreturn.h。我不确定委员会在这方面的政策,但其中一个效果肯定是减少添加到标准库中的新标头的名称与现有项目使用的标头名称发生冲突的可能性。

票数 1
EN

Stack Overflow用户

发布于 2021-02-23 16:21:17

如果您使用的是#include <stdatomic.h>,那么应该包括库头。但是它可以自由地对#include <stdatomi.h>#include <stdatomix.h>进行同样的操作(或不使用)。

但是,#include <stdatom.h>将被视为不同的文件。但另一方面,没有什么明确禁止实现有一个文件stdatom.h,该文件的内容仅为#include <stdatomic.h>。并不是说任何实现都会这样做,但这是允许的。

这里没有真正的矛盾。只是个有趣的结果。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66336788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档