这是未定义的行为吗?标准的相关部分并没有多说。
size_t n = SIZE_MAX / sizeof(double) + 1;
size_t m = sizeof(double[n]);
Run Code Online (Sandbox Code Playgroud) 从C99开始,C支持实现定义的扩展整数类型(6.2.5 p7)。是否有任何实现实际上实现了扩展整数类型?
我知道gcc的__int128,目前被视为语言扩展,在gcc的实现定义的行为(J.3.5)文档中并未正式列出为扩展的整数类型。在clang或MSVC的文档中找不到任何提及的内容。Solaris声明没有扩展的整数类型。
在什么是“扩展整数类型”上有一些相关讨论。,但提到的唯一其他候选对象是__int64在旧版本的MSVC中,并且注释似乎同意这不是正式的扩展整数类型,因为该版本的MSVC为C90。
POSIX 和 C11 都要求流具有关联的锁以防止数据竞争和交错。POSIX 文档flockfile()和相关函数以允许线程安全 I/O 跨越多个调用。是否有等效的 C 函数?我不记得一个,也找不到提到的一个,这并不一定意味着一个不存在。
在相关说明中,假设任何声称flockfile()在使用 C11 线程时遵守 POSIX 一致性的实现是否安全?我认为大多数支持threads.h的主要POSIX兼容C实现都是通过在pthreads上构建来实现的,这意味着这种假设通常是安全的。但是,多线程很难,了解异常会很有帮助。