cost 237 ms
序列点之间能否多次读取volatile变量? - Can volatile variables be read multiple times between sequence points?

我正在制作自己的 C 编译器,以尝试了解有关 C 的尽可能多的细节。我现在正试图准确了解volatile对象的工作原理。 令人困惑的是,代码中的每个读取访问都必须严格执行(C11,6.7.3p7): 具有 volatile 限定类型的 object 可能会以实现未知的方式进行修改或具有其他未知的副 ...

是否可以输入双关语分配的结构,仅在 const-ness 上有所不同? - Is it okay to type-pun allocated structs varying only in const-ness?

在 C(如果需要具体的话,就说 C11),下面的程序是否定义明确? 它会始终打印a=3 b=4还是编译器优化会影响 output? (现实世界的动机是提供只应该由特定模块(即源文件)修改的结构的只读公共“视图”。) ...

通过 c11 中的标准输入从文件中读取字符串 - reading string from a file via stdin in c11

所以我有一个 .txt 文件,我想使用 scanf() 在 c11 程序中通过 stdin 读取该文件。 该文件本质上是由一个字符串组成的多行。 例子: 我怎么知道文件何时完成,我尝试将字符串与仅使用 eof 字符的字符串进行比较,但代码循环出错。 非常感谢任何建议。 ...

检查编译器是否支持源代码中的可选 C 功能 - Check if Compiler supports optional C feature in the source

我有一个简单的程序(一个非常简单的 malloc/free 实现,最初是为大学作业编写的),它必须检查 free 中指针的“有效性”,为此我需要取消引用它。 当用户提供 bs 指针时,为了避免 Segfaults,我想检查内存当前是否映射到我的地址空间。 我想用类似的东西来做到这一点 现在,问 ...

2022-07-03 09:25:27   2   54    c / gcc / clang / c11  
如何对齐但有偏移 - How to align but with offset

假设我需要分配struct A但b需要 4 对齐。 我想我可以手动填充malloc()返回的指针。 有什么更干净的方法吗? 就像 gcc 的__attribute__((aligned(4)))一样,但它对齐了整个结构。 我不能改变它的布局。 ...

为什么不需要符合 IEC 60559 的实现来定义 __STDC_IEC_559__(为 1)? - Why isn't an IEC 60559 conformant implementation required to define __STDC_IEC_559__ (to 1)?

C (C99+) 标准要求(虽然隐含地)一个符合要求的实现来将__STDC__定义为 1。 但是,C 标准不需要符合 IEC 60559 的实现来定义__STDC_IEC_559__ (为 1)。 结果: 在这里我们看到这些宏的语义不一致。 任何想法为什么? 这是一个可能的缺陷吗? 为什么 C ...

GCC 在#include 之后在 C11 模式下未定义对 thrd_create() 的引用<threads.h>在 Debian</threads.h> - GCC undefined reference to thrd_create() in C11 mode after #include <threads.h> in Debian

我正在尝试编译一个程序,我已经能够在其他几个 Debian 环境中编译,使用 C11 &lt;threads.h&gt;库在相对较新的安装 Debian Bullseye 和“ gcc (Debian 10.2.1-6) 10.2.1 20210110 》已安装用命令gcc -o &lt;prog ...

作为常量初始值设定项表达式的一部分,字符串文字转换为 bool 是否有效? - Is a string literal converted to bool valid as part of a constant initializer expression?

enum { compile_time_assertion = 1 / ("description" &amp;&amp; 1); }; 上面的代码片段是否符合 C11? 将字符串文字作为表达式的一部分可能会违反初始化表达式的众多约束之一。 6.6p7 列出了一个地址常量作为可能的初始化表达 ...

_Static_assert 在未使用的通用选择中 - _Static_assert in unused generic selection

看起来typeof运算符可能会被下一个 C 标准接受,我正在寻找是否有办法利用它来使用可移植的 ISO-C 创建一个宏,该宏可以获取传入的数组的长度如果将指针传递给它,则编译失败。 通常,泛型选择可用于在使用不需要的类型时通过将其排除在泛型关联列表之外来强制编译器错误,但在这种情况下,我们需要一个默 ...

联合的别名数组 - Aliasing array of unions

这是这个问题的后续问题。 以下代码在Compiler Explorer上。 虽然my_copy看起来做作,但访问模式是由硬件强制执行的(必须对连续对齐的位置进行 2x 32 位写入)。 丑陋的 rest 是由于不同开发人员相隔几年编写的几段代码的交集。 问题是,传递给my_copy的 argumen ...

2022-03-15 21:00:45   1   81    c / c99 / c11  
C 联合型双关语 arrays - C union type punning arrays

鉴于以下代码,我有一些与类型双关相关的问题。 我看不出有任何方式表明这没有违反严格的别名规则,但我无法指出具体的违规行为。 我最好的猜测是将工会成员传递到 function 违反了严格的别名。 以下代码在Compiler Explorer上。 我的观察: 假设 arguments 到func之间不 ...

2022-03-15 18:07:19   3   221    c / c99 / c11  
为什么我不能将 function 返回的结构分配给结构? - Why I can't assign struct returned by a function to struct?

我写了“轻量级”时间库,我有这样的结构和类型定义: 我有一个返回 tm_t 的tm_t : 我想这样使用它: 我收到此错误: 从类型 'int' 分配给类型 'tm_t' {aka 'struct tmt'} 时类型不兼容我也试过像这样更改 function 和变量: 我做错了什么? ...

无法解决 STM32CubeIDE 中与指针数组相关的 C 警告 - Can't resolve C warning related to pointer array in STM32CubeIDE

面对一个我们无法摆脱的警告。 我正在使用带有标准 C11 编译器的 stm32 MCU 和 STM32CubeIDE。 我想我能理解为什么编译器会发出警告,但问题是我无法解决。 任何帮助表示赞赏。 谢谢你。 指针数组是这样定义的 要调用的function是这样定义的: 实际的 function 调用 ...

Function 作为 for 循环的条件 - 有人在 C 中这样写吗? - Function as condition in for loop - does anyone write like this in C?

在使用 C#、Java 等高级语言多年后,我重新发现了 C 并且我正在使用类似泛型的函数,我正在尝试编写类似函子等的东西。 我写了这样的东西: 所以它有效。 问题是: C有人这样写吗? 意见免费版: C专业程序员(操作系统、数据库、标准库源码)会出现这样的写法吗? 这是否被认为是不好的做法,不受欢 ...

2022-02-20 23:09:56   1   292    c / for-loop / c11  

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM