此标签用于有关国际标准ISO 9899:1999,又名“C99”的问题,包括技术勘误,以及有关用C99编写的代码的问题(与K&R C,C89或更高版本C标准修订版本相反,如2011年修订版C11) 。
MS Visual Studio 编译器提供哪些 C99 功能?
众所周知,微软的Visual Studio编译器不支持C99,而且看起来他们也没有计划支持它。 然而,编译器确实包含一些精心挑选的功能,例如......
`void foo(int a[static 0]);`有效吗?
以下函数是否严格符合C99? 无效 foo(int a[静态 0]) { (无效)a; } GCC 和 Clang 都会发出有关使用零大小数组的警告,但我认为这个警告不合理......
使用 printf(),我可以使用 %hhu 表示无符号字符,%hi 表示短整型,%zu 表示 size_t,%tx 表示 ptrdiff_t 等。 我应该为 _Bool 使用什么转换格式说明符?摊位上有吗...
我愿意在格式字符串中使用 %zu 格式说明符打印 size_t 值,但是,我总是得到“zu”作为输出,而不是 size_t 变量中的实际值: 尺寸_t...
我必须编写一个从 aaaa 迭代到 zzzz 的小代码。 到目前为止,我使用 32 位整数和天真的方法 静态常量字符 ASCII_A = 'a'; 静态常量字符 ASCII_Z = 'z'; 字符 C0, C1...
所以这是我的代码片段(假设变量声明为 int 类型): printf("行数:"); scanf("%d", &x); printf("列数:&qu...
为什么 clang-tidy 会为这个 C99 程序产生“收缩转换”?
为什么 f2 中的第二个和第三个作业产生这个而第一个没有? Clang-Tidy:缩小从“int”到有符号类型“char”的转换是实现定义的 AFAIK,根据 C lan...
C - Eclipse - “混合”方言和 ANSI 支持崩溃程序?
我在 Eclipse 中遇到了一个奇怪的 C 问题。右键单击我的项目,转到“属性”、“C/C++ 构建”、“设置”、“Gcc C 编译器方言”。在下拉菜单中,默认情况下什么都没有
我正在尝试使用 winsock2 库,我正在使用它从 open62541 编译教程服务器 我使用并出错的一些代码(来自合并构建的 open62541.c): #包括 我正在尝试使用 winsock2 库,我正在使用它从 open62541 编译教程服务器 我使用并出错的一些代码(来自合并构建的 open62541.c): #include <winsock2.h> #include <Windows.h> #INCLUDE <ws2tcpip.h> int main(){ struct pollfd tmp_poll_fd; } 我正在使用 mingw 编译 open62541 服务器,并按照tutorial gcc -std=c99 server.c open62541.c -lws2_32 -o server.exe 错误: error: storage size of 'tmp_poll_fd' isn't known struct pollfd tmp_poll_fd; 其他错误也与 winsock2 库有关,例如 POLLWRNORM undeclared 我已经检查过 winsock2.h 就位了, 我也检查里面的winsock2.h包含struct pollfd和POLLWRNORM 我已经尝试在 gcc 命令中进行一些更改,例如: gcc -std=c99 server.c open62541.c -libws2_32 -o server.exe 有办法解决这个问题吗? 免责声明:此答案是基于我本地安装的MinGW版本(8.1.0,由MinGW-W64项目构建),您的情况可能有所不同。 包含文件“winsock2.h”对目标Windows版本有保护: #if (_WIN32_WINNT >= 0x0600) /* ... */ typedef struct pollfd { /* ... */ #endif /*(_WIN32_WINNT >= 0x0600)*/ 宏_WIN32_WINNT由“_mingw.h”设置为0x502,如果不通过其他方式更改它: #ifndef _WIN32_WINNT #define _WIN32_WINNT 0x502 #endif 根据 Microsoft 的文档,值 0x502 表示“Windows Server 2003”。如果您将宏设置为大于或等于 0x600(“Windows Vista”)的值,您的编译将成功: #define _WIN32_WINNT 0x600 #include <winsock2.h> #include <windows.h> #include <ws2tcpip.h> int main(void) { struct pollfd tmp_poll_fd; }
编辑:我必须专门为此目的使用 union,因为本章是关于它们的。我所说的第一个任务的片段是基于: 设计一个名为 byte_set 的联合,其中
如何编写宏 #define CONCATENATE(x) 以产生以下结果: 连接(整数); // 生产 --> int 连接(无符号整数); // 产生 --> unsignedint 连接(长...
是否有文献证明 printf 的 %f 将 float 转换为 double? [重复]
我读过 printf 的 %f 说明符用于 double,它会自动将 float 转换为 double。但是我在书中找不到任何证据(尽管它在网上有说明)。 我没有...
显然 fdopen 需要使用编译标准的 POSIX/gnu99。我希望留在 C99。 我遇到这个问题是因为我使用 open() 创建文件描述符然后(因为我 ...
以下代码被 GCC 和 Clang 拒绝(godbolt 链接): 构造事物; typedef 枚举 { THING_TYPE_A, THING_TYPE_B, } thing_type_t; typedef 结构 thing_a { 诠释我; } thing_a_t; 类型定义
如何在不写入 (null) 的情况下将字符串写入 C 文件中?
这就是我得到的: #包括 #包括 #包括 #包括 int main(int argc, char* argv[]) { 无符号短索引; ...
假设我有一个具有非负值的整数变量和两个指向它的指针——一个有符号指针和一个无符号指针。据我从标准中可以看出,这很好。 6.5 一个物体应该...
我发现了几个讨论有符号和无符号编译器优化的问题。 一般的结论是,由于溢出的未定义行为,signed 允许进行更多优化。 呵呵……
我在 Linux 机器上工作。是否有任何系统命令可以找到我正在使用的 C 编译器所遵循的标准?
我用C语言写了一些代码(使用c99标准),希望你能帮助我重新安排代码中的include。目前一切都很好,但我感觉很乱,我很困惑,include是否应该 ...
这个问题肯定看起来很愚蠢,但我总是浪费很多时间,用测试错误直到它工作,这种问题。我需要一个指针从一个函数中返回一个值,然后我需要......