Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
安全浮点除法
我的代码中有一些地方我想确保 2 个任意浮点数 32 位单精度 的除法不会溢出 目标 编译器不保证 足够明确 对 INF INF 的良好处理 并且 不完全保证 IEEE 754 的异常值 可能未定义 并且目标可能会改变 另外 我无法对这几个
c
floatingpoint
Division
dividebyzero
c89
使用 gcc 在 C 中实现类型安全的可变参数
很多时候 我希望函数接收可变数量的参数 例如以 NULL 结尾 define push stack t stack push VARARG NULL func push stack t stack char s va list args v
c
gcc
staticanalysis
c89
C 的哪些部分最可移植?
我最近读到了 Lua 联合创始人 Luiz H de Figueredo 和 Roberto Ierusalimschy 的采访 他们讨论了 Lua 的设计和实现 至少可以说这是非常有趣的 然而 讨论的一部分让我想起了一些事情 Robert
c
lua
portability
c89
警告:ISO C90 禁止混合声明和代码 [-Wdeclaration-after-statement] [重复]
这个问题在这里已经有答案了 我有这个c文件 include
c
c89
C89:有符号/无符号不匹配
有符号 无符号不匹配一定是不好的吗 这是我的程序 int main int argc char argv unsigned int i for i 1 i lt argc i signed unsigned mismatch here ar
size
c89
用 C 语言实现 FIFO 队列
对于嵌入式应用程序 我尝试使用 ANSI C 实现先进先出 FIFO 结构队列 最直接的方法似乎是通过实现链表 以便每个结构包含指向队列中下一个的指针 因此我将结构本身定义为 typedef enum LED on LED off etc
c
struct
FIFO
c89
哪些 C99 功能被认为是有害的或不受支持的 [关闭]
Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我通常在 C89 中编写 C 代码 现在使用 C99 的一些功能 例如intxx t or VA ARGS or snprintf 非常有用 甚
c
compilerconstruction
C99
c89
在 Visual Studio 2015 中强制执行 ANSI C 标准
我试图让 Visual Studio 在编译项目时强制执行 ANSI C 标准 但我无法让它工作 有小费吗 我已阅读所有教程 启用了 Za 选项 并将文件命名为 c 而不是 cpp 但是 以下程序仍然可以成功构建 include
c
c89
visualc2015
在 MS Visual C++ 中启用 VLA(可变长度数组)?
如何启用 VLA C99 中定义的可变长度数组 MS Visual C 中的使用 或者根本不可能 是的 我知道 C 标准基于 C89 并且 VLA 在 C89 标准中不可用 因此在 C 中不可用 但 MSVC 也应该是 C 编译器 可以使用
c
visualc
C99
c89
variablelengtharray
为什么 yacc 无法解析语法规则的第二行,即使它正确解析了第一行?
我想将行解析为 20191201 170003296 1 102290 1 102470 0 为此 我编写了以下基本 yacc lex 语法 词法分析器 语法上 include
c
yacc
Lex
c89
使用指向单个值的指针作为数组
请注意 该问题已针对 注册 变量进行了扩展 简而言之 我的问题是 这个合法的 C 代码是否合法 按照不同 ISO 9899 C 规范的标准字母 最好在标准的文字中加上 证明 int a 0 int b a 0 const int c 0 b
c
Arrays
pointers
C99
c89
(void)var 实际上做了什么?
考虑以下main int main int argc char argv return 0 编译后cc Wall Wextra 生成 未使用的参数 的警告 当我不需要在函数中使用参数时 例如在信号处理函数 http en wikipedia
c
void
c89
C89、C90 或 C99 中的所有函数都需要原型吗?
为了真正符合标准 C 中的所有函数 除 main 之外 都必须有原型吗 即使它们仅在同一翻译单元中定义后才使用 这取决于您所说的 真正符合标准 是什么意思 然而 简短的答案是 确保所有函数在使用之前在范围内都有原型是一个好主意 一个更合格的
c
C99
c89
如何在 gcc 中强制执行 C89 风格的变量声明?
我工作的代码库主要是 C 和一点点 C 并且主要是用 gcc 构建的 但有时需要用 MSVC 构建 微软的 C 编译器仍然是 C89 带有一些小的扩展 并且它仍然不支持混合代码和变量定义 laC C99 因此 我需要找到一种方法来防止开发人
c
visualc
gcc
C99
c89
ANSI C 编译器可以删除延迟循环吗?
考虑 ANSI C 中的 while 循环 其唯一目的是延迟执行 unsigned long counter DELAY COUNT while counter 我已经看到这在嵌入式系统上被大量使用来强制延迟 例如 没有sleep功能和定时
c
Optimization
standards
c89
为什么我不能“转到默认值”或“转到案例 x;”在开关选择结构内?
C11 第 6 8 1 节 http www iso 9899 info n1570 html 6 8 1 or C99 http www iso 9899 info n1256 html 6 8 1 或第 3 6 1 节C89 http
c
C99
c89
C11
是否定义了两个 NULL 指针相减的行为?
如果两个非 void 指针变量都是定义的 根据 C99 和 或 C 98 它们之间的区别是NULL valued 例如 假设我有一个如下所示的缓冲区结构 struct buf char buf char pwrite char pread
c
C99
c89
为什么在 C99 之前禁止混合声明和代码?
我最近成为一门大学课程的助教 该课程主要教授 C 该课程以 C90 为标准 主要归功于广泛的编译器支持 对于具有 Java 经验的 C 新手来说 非常令人困惑的概念之一是变量声明和代码不得混合在块 复合语句 中的规则 这个限制最终在 C99
c
C99
c89
c89:将 int 转换为 void* 并返回
首先 这不是一个骗局 将 int 转换为 void 指针并再次返回 int 是否安全 https stackoverflow com questions 3568069 is it safe to cast an int to void p
c
c89
为什么在 C89 中整数除法会得到不同的值?
例如 假设您有以下变量 int i 9 int j 7 取决于实施的价值 i j 可以是 1 or 2 怎么可能得到这两个不同的结果呢 令人惊讶的是 结果是 C89 中定义的实现 ANSI 草案 http flash gordon me u
c
c89
1
2
»