此标签用于有关国际标准ISO 9899:1999,又名“C99”的问题,包括技术勘误,以及有关用C99编写的代码的问题(与K&R C,C89或更高版本C标准修订版本相反,如2011年修订版C11) 。
我用C99编写代码并通过GCC编译。出于风格原因,我想使用函数重载(否则我必须自己进行名称修改)。 我读过 C99 是否有原因
我经常希望有一种简单的方法来使用 sprintf/snprintf 构造字符串,而无需定义本地数组的麻烦,如下所示: 字符str[256]; snprintf(str, sizeof(str), 格式, ...); 使用字符串...
在我的程序中,我有一个函数可以执行简单的向量加法 c[0:15] = a[0:15] + b[0:15]。函数原型为: void vecadd(float * 限制 a, float * 限制 b, float * 限制 c); ...
vsprintf() 当有更多参数然后在格式中指定时不会打印警告
我尝试使用简单的日志记录机制在创建日志时创建错误检查。我观察到可以使用 vfprintf(),它在编译时不会打印任何警告,...
为了开始使用 CORDIC for log10,我实现了此 PDF 第 6 页中派生的算法: #包括 #包括 // https://www.mikrocontroller.net/attachment/...
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; 类型定义