7得票1回答
在C语言中,哪些对象声明会导致存储空间的保留(即被定义)?

C11在第6.7节中规定了哪些声明也是定义: 标识符的定义是对该标识符的声明: — 对于对象,导致为该对象保留存储空间; [...] 我没有找到一个全面的列表,列出了哪些对象声明会导致保留存储空间。从直觉上讲,这对我来说是清楚的,但我无法从C11标准中获取这些信息。

22得票2回答
__func__ 在函数定义外部

如果我们在C(C99 / C11)和C ++中的函数外部使用预定义变量__func__,会发生什么?#include <stdio.h> const char* str = __func__; int main(void) { printf("%s", str); ...

11得票1回答
C11/C++11 内存模型

我有两个问题: 我想知道C++11和 C11的标准是否共享相同的内存模型规范。我读到这是这样的,事实上C11正在“继承”C++11的内存模型(无论哪种历史原因先发生或同时/由相同的人发生,尽管我认为主要是C++专家之一的Boehm发表了很多意见),但我想确认向更有经验的人提问。 我的下一个...

8得票2回答
如何理解在独立的C或C++实现中的原子操作?

C11和C++11通过执行线程来定义原子性。尽管在托管环境中,“线程”是明确的,但在独立语言实现中,“线程”这个词是一个模糊的术语。 如何在必须在程序内部实现所有线程的自由实现中正式理解C11和C++11中指定的原子性?例如:ISR是否是单独的执行线程? 为什么标准委员会将原子性的定义限制...

10得票2回答
C99 - 错误:未知类型名称 'pid_t'

我正在使用Linux (3.13.0-24-generic #46-Ubuntu),编写了一个有关pid的简单C程序。 在编译时,出现了一些问题: gcc pid_test.c,这个是没问题的。 gcc -std=c99 pid_test.c或者gcc -std=c11 pid_test...

67得票6回答
在C11中,匿名结构体和联合体何时有用?

C11增加了“匿名结构体和联合体”等新特性。 我搜索了一下,但没有找到一个清晰的解释来说明何时使用匿名结构体和联合体会有用。 我问这个问题是因为我不完全理解它们是什么。 我知道它们是没有名称的结构体或联合体,但我通常将其视为错误,因此我只能想象命名结构体的用途。

9得票1回答
clang找不到aligned_alloc函数

我在Mac OS X主机上运行以下版本的clang: $ clang -v Apple LLVM version 8.1.0 (clang-802.0.42) 我有一些代码,使用了C11的aligned_alloc()函数来分配对齐的内存块。 我正在使用-std=c11标志编译我的二进...

8得票1回答
C语言中的_Thread_local存储类说明符是什么?

我在书 C How to Program 7th 中读到了一条关于一种新的标准C存储类别 _Thread_local 的注释: 新的C标准增加了存储类别说明符_Thread_local,超出了本书的范围。 我在谷歌和这里搜索了它,但是没有任何结果。有人能提供一些相关链接吗?

8得票2回答
一个数组对象的最后一个元素之后为什么要有一个理由?

根据N1570(C11草案)6.5.6/8 加法运算符:: 此外,如果表达式P指向数组对象的最后一个元素,则表达式(P)+1指向数组对象的最后一个元素之后的一个元素;如果表达式Q指向数组对象的最后一个元素之后的一个元素,则表达式(Q)-1指向数组对象的最后一个元素 子句6.5.6/9还...

7得票3回答
C11 Unicode支持

我正在编写一些类似于atoi()或strtoll()的字符串转换函数。我想包含一个接受char16_t*或char32_t*而不仅仅是char*或wchar_t*的版本。 我的函数运行正常,但是在编写它时,我意识到我不明白char16_t或char32_t是什么。我知道标准只要求它们是至少1...