c99相关内容

Cion和C99标准版不能使用可变长度数组吗?

我一直很高兴地与Clion一起编写代码,在使用C99标准的同时为大学创建一个项目。从今天起,数组声明的可变长度将不起作用。有谁知道为什么吗? 代码: int main() { // to allow debugging with CLION setbuf(stdout, 0); int number = 5; int myarray[number]; ..
发布时间:2022-08-28 20:00:44 其他开发

用C99中的库在Windows上用TCC编译文件

所以TCC的最新版本理应实现了C99的一些功能,但我发现它没有包含C99的数学库。 有没有办法让它在Windows上更多地使用C99的库?我在谷歌上搜索了一下,发现了一些主要与Linux有关的建议,但对于这个项目,我需要让它在Windows上运行。 编辑:这不是在Windows平台上获得‘任何’编译器的问题。我意识到有很多编译器。我特别需要让TCC来做这件事。 编辑:项目需要执行 ..
发布时间:2022-05-08 21:57:01 其他开发

为什么 int x[n] 错误,其中 n 是 const 值?

我不明白为什么这样做是错误的: const int n = 5;诠释 x[n] = { 1,1,3,4,5 }; 即使 n 已经是一个常量值. 虽然这样做似乎适合 GNU 编译器: const int n = 5;诠释 x[n];/*没有初始化*/ 我知道 C99 的 VLA 功能,我认为它与正在发生的事情有关,但是我只是需要澄清一下背景中发生的事情. 解决方案 要记住的关键 ..
发布时间:2022-01-23 23:55:15 其他开发

在不使用 c99 标准的情况下使用 bool 编译 c 代码

我尝试使用 C 中的 bool 变量编译代码,并且包含了 stdbool 标头,但是当我编译它时,我没有指定我想用 c99 标准编译它(所以它被编译了使用 ANSI C 标准),但它仍然有效.我想知道为什么会这样?这是代码: #include #include int main() {字符名称[20];printf("你叫什么名字?");获取(名称);pr ..
发布时间:2022-01-19 17:52:39 其他开发

C中布尔表达式的返回值

出于不值得一提的原因,我想知道布尔表达式是否有标准定义的值.例如 int foo () {返回 (bar > 5);} 背景是我担心我们的团队将 TRUE 定义为不同于 1 的东西,我担心有人可能会这样做: if (foo() == TRUE) {/* 做事 */} 我知道最好的选择是简单地做 if (foo()) 但你永远不知道. 是否有为布尔表达式定义的标准值,还是取决于编译 ..
发布时间:2022-01-19 17:51:30 其他开发

C99 - 为什么将 false 和 true 定义为 0 和 1 而不是 ((bool)0) 和 ((bool)1)?

刚刚偶然发现一个失败的断言,因为它将 false 与函数的返回类型进行比较,因为函数本身返回了一个布尔值,并且断言不仅检查了值,还检查了返回值的类型以匹配那个为假,以保证返回一个布尔值.现在的问题是,C99 将 bool 定义为 _Bool 并且 _Bool 甚至不一定与 int 大小相同(实际上,根据我的经验,在当今的大多数平台上,它通常与 unsigned char 大小相同),更不用说相同了 ..
发布时间:2022-01-19 17:13:09 其他开发

c中的模拟器/生成的switch语句范围

在 c(99?) 或目标 C switch 语句中是否有支持范围大小写的技巧?我知道不支持这样写: switch(x)情况1:案例 2..10:案例 11: 但我在想应该有一种方法可以使用#define 宏生成代码.当然我可以用案例列表定义一个宏,但我希望有一种更优雅的方式,比如CASERANGE(x,x+10) 会生成: 案例 x案例 x+1案例 x+2 有可能吗? 解决方案 G ..
发布时间:2022-01-19 11:11:47 移动开发

初始化变量和在声明后立即为其赋值有区别吗?

假设一个纯粹的非优化编译器,初始化变量和声明后赋值之间的机器代码有什么区别吗? 初始化方法: int x = 2; 赋值方法: int x;x = 2; 我使用 GCC 输出为这两种不同方法生成的程序集,并且都生成了一条机器指令: movl $2, 12(%esp) 这条指令只是将 x 变量持有的内存设置为 2 的值.GCC 可能正在对此进行优化,因为它可以识别操作的最终结果;但 ..
发布时间:2022-01-19 00:06:32 其他开发

为什么 C++11 不支持 C99 指定的初始化列表?

考虑: 结构人{整数高度;重量;年龄;};主函数(){人 p { .age = 18 };} 上面的代码在 C99 中是合法的,但在 C++11 中是不合法的. 什么是 c++11 标准委员会不支持这样一个方便的功能的理由是什么? 解决方案 C++ 有构造函数.如果只初始化一个成员是有意义的,那么可以通过实现适当的构造函数在程序中表达.这是 C++ 提倡的那种抽象. 另一方 ..
发布时间:2022-01-18 23:11:06 C/C++开发

MS Visual Studio 编译器中提供了哪些 C99 功能?

众所周知,微软的 Visual Studio 编译器不支持 C99,看起来他们有 没有计划 支持它. 但是,编译器确实包含一些精选的功能,例如可变参数宏和 long long - 请参阅 这个答案: 我们收到了很多关于某些 C99 功能的请求,我们已经尝试实现它们(或类似功能).几个示例是可变参数宏、long long、__pragma、__FUNCTION__ 和 __restric ..
发布时间:2022-01-17 00:07:41 其他开发

“int"和“int"有什么区别?和“int_fast16_t"?

据我了解,C 规范说 int 类型应该是目标平台上最有效的类型,至少包含 16 位. int_fast16_t 的 C99 定义不也是这样吗? 也许他们把它放在那里只是为了保持一致性,因为需要其他 int_fastXX_t? 更新 总结以下讨论: 我的问题在很多方面都是错误的.C 标准没有为 int 指定位数.它给出了它必须包含的范围 [-32767,32767]. ..
发布时间:2022-01-14 14:52:16 其他开发

有什么理由不使用固定宽度的整数类型(例如 uint8_t)?

假设您使用的是支持 C99(甚至只是 stdint.h)的编译器,是否有任何理由不使用 uint8_t 等固定宽度整数类型? 我知道的一个原因是,在处理字符时使用 chars 比使用 (u)int8_ts 更有意义,因为这个问题中提到. 但是如果你打算存储一个数字,你什么时候想使用一个你不知道它有多大的类型呢?IE.在什么情况下,您希望在 unsigned short 中存储一个数字, ..
发布时间:2022-01-14 14:34:12 其他开发

GCC __attribute__((mode(XX)) 实际上做了什么?

这源于今天早些时候关于 bignum 库和 gcc 特定于 C 语言的 hacks 的问题.具体来说,使用了这两个声明: typedef unsigned int dword_t __attribute__((mode(DI))); 在 32 位系统上和 typedef unsigned int dword_t __attribute__((mode(TI))); 在 64 位系统上. ..
发布时间:2022-01-13 18:08:32 其他开发