Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
编译器如何解析在变长数组之后声明的变量的地址?
假设我有以下函数 它使用可变长度数组 void func int size int var1 int arr size int var2 编译器如何确定地址var2 我能想到的唯一方法就是放置arr after var1 and var2
c
compilerconstruction
Compilation
C99
variablelengtharray
C99 中带有 0 个参数的可变参数宏
我有一些调试代码 如下所示 define STRINGIFY x x define TOSTRING x STRINGIFY x define AT FILE TOSTRING LINE void my error const char l
macros
C99
variadic
C 联合类型双关数组
鉴于以下代码 我有一些与类型双关相关的问题 我看不出这没有违反严格的别名规则 但我无法指出具体的违规行为 我最好的猜测是 将联合成员传递到函数中违反了严格的别名 以下代码已开启编译器资源管理器 https godbolt org z bnY
c
C99
C11
在 NULL 表示为 0 的平台上,编译器是否曾经生成过 NULL <= p 的意外代码
在 C99 中 平等 似乎从来没有未定义过 它可以产生1如果您意外地将其应用到无效地址 例如 x 1 y可能是偶然的事实 它不会产生未定义的行为 许多 但不是全部 无效地址未定义为根据标准计算 使用 因此p x with p悬空指针 或者
c
C99
undefinedbehavior
size_t 的正确定义是什么? [复制]
这个问题在这里已经有答案了 首先 我所说的 正确的定义 是什么意思 例如 K R C 程序设计语言 第二版 在部分2 2 数据类型和大小 对整数做出非常清楚的陈述 有short int and long对于整数类型 它们需要代表不同边界的值
c
C99
C11
sizet
如何检索 C99 可变参数宏的最后一个参数?
Visual Studio 失败的 static assert 错误消息完全由错误代码和 static assert 的第二个参数组成 没有任何其他消息表明这是静态断言失败 我想做一个宏来解决这个问题 例如 作为第一次尝试 define S
c
C99
cpreprocessor
如果 pragma STDC FENV_ACCESS 不存在,是否意味着默认舍入模式?
我对 C 标准的解释有疑问 最新草案取自http www open std org jtc1 sc22 wg14 www docs n2454 pdf http www open std org jtc1 sc22 wg14 www doc
c
C99
C11
C99 指定初始化程序重复索引在构建输出或 lint 中根本未标记
前几天我玩了一下指定的初始化器 令我惊讶的是 多次使用相同的索引是有效的 更重要的是 当我这样做时 它甚至没有产生编译器警告 错误 甚至信息语句 甚至 PC Lint 似乎也不关心 我认为这最让我惊讶 我想知道在这种情况下编译器是否有原因甚
c
C99
Lint
designatedinitializer
PClint
哪些 C99 功能被认为是有害的或不受支持的 [关闭]
Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我通常在 C89 中编写 C 代码 现在使用 C99 的一些功能 例如intxx t or VA ARGS or snprintf 非常有用 甚
c
compilerconstruction
C99
c89
在 MS Visual C++ 中启用 VLA(可变长度数组)?
如何启用 VLA C99 中定义的可变长度数组 MS Visual C 中的使用 或者根本不可能 是的 我知道 C 标准基于 C89 并且 VLA 在 C89 标准中不可用 因此在 C 中不可用 但 MSVC 也应该是 C 编译器 可以使用
c
visualc
C99
c89
variablelengtharray
使用指向单个值的指针作为数组
请注意 该问题已针对 注册 变量进行了扩展 简而言之 我的问题是 这个合法的 C 代码是否合法 按照不同 ISO 9899 C 规范的标准字母 最好在标准的文字中加上 证明 int a 0 int b a 0 const int c 0 b
c
Arrays
pointers
C99
c89
.c 文件中的 C99 内联函数
我在 c 中定义了我的函数 没有标头声明 如下所示 inline int func int i return i 1 然后在下面的同一个文件中我使用它 i func i 在链接过程中 我得到了 对 func 的未定义引用 为什么 The i
c
C99
使用 C99 样式的指定初始值设定项列表按以下方式初始化联合内位字段的成员是否有效?
当我写一个关于 PC Lint 的问题 https stackoverflow com questions 22823277 how do i suppress pc lint errors for c99 style initializa
c
C99
gcc(windows + MinGW) 是否在 inttypes.h 中定义了 SCNd8、SCNu8?
include
c
gcc
MinGW
C99
C,从单个输入行读取多个数字(scanf?)
我用 C 编写了一个应用程序 需要输入两行 第一个输入告诉 int 数组有多大 第二个输入包含由空格分隔的值 例如 输入以下内容 5 1 2 3 4 99 应该创建一个包含 1 2 3 4 99 最快的方法是什么 我的问题是读取多个数字而不
c
C99
scanf
atexit 被认为有害吗?
使用是否存在固有的危险atexit在图书馆等大型项目中 如果是这样 背后的技术本质是什么 atexit这可能会导致大型项目出现问题 我避免使用的主要原因atexit在图书馆中 它的任何使用都涉及全局状态 一个好的库应该避免拥有全局状态 然而
c
C99
atexit
C99 中的引用传递
我刚刚读过this http cartan cas suffolk edu oopdocbook opensource passreference html 在C 和C99 中 我们可以绕过 参考 它提供了相同的 性能相当于指针传递 所以我
passbyreference
C99
C 联合一开始就没有填充吗?
C99 标准中是否保证联合只会像结构一样在末尾进行填充 与此相关的是 联盟的地址是否始终等于其任何可能成员的地址 是的 正如您所注意到的 结构从来没有前导填充 联合的地址始终引用联合的任何组件的第一个元素 具有适当的强制转换 因此联合的开头
c
C99
c 中的模拟器/生成的 switch 语句范围
是否有 hack 来支持 c 99 或 Objective C switch 语句中的范围情况 我知道不支持这样写 switch x case 1 case 2 10 case 11 但我认为应该有一种方法可以使用 define 宏生成代码
Objectivec
c
macros
switchstatement
C99
(int (*)[])var1 代表什么?
我找到了这个示例代码 我尝试用谷歌搜索什么 int var1可以代表 但我没有得到有用的结果 include
c
multidimensionalarray
C99
variablelength
1
2
3
4
5
6
7
»