Tag: 错误

是否有一个printf说明符要求浮点数不是双倍?

当我使用带有float类型参数的snprintf “%f”说明符时,我得到MISRA类型错误。 根据我的研究,MISRA是正确的,因为“%f”预示着一种double类型。 是否有浮点说明符或修饰符将使用float类型参数而不是double ? 我正在研究嵌入式系统,并且不想将32位浮点数转换为64位double精度,只是为了取悦snprintf函数。 代码打印到调试/控制台端口,这是转换发生的唯一位置。 对于那些需要代码示例的人: // This section is for those C++ purists and it fulfills the C++ tag. #if __cplusplus #include #else #include #endif #define BUFFER_SIZE (128U) int main(void) { char buffer[BUFFER_SIZE]; float my_float = 1.234F; // The compiler will promote the single precision “my_float” // to double precision before passing […]

我在哪里可以看到与errno交互的函数列表?

在“The C Programming Language”一书中,它说: “当文件出现错误或文件结束时,库中的许多function都会设置状态指示器。这些指示器可以显式设置和测试。此外,整数表达式errno (在声明)可能包含一个错误号提供有关最新错误的进一步信息。“ 我在哪里可以看到这些function的列表?

stdio总是设置errno吗?

当stdio流遇到错误(但不是EOF)时,将设置流的错误指示符,以便ferror()将返回非零值。 我一直认为在errno可以获得更多信息。 但我怎么知道这个? 某些函数的文档[例如Linux下的man fopen ]表示也将设置errno 。 然而, man fgets根本没有提到errno 。 glibc信息页面令人放心: 除了设置与流关联的错误指示符之外,对流进行操作的函数还以与对文件描述符进行操作的相应低级函数相同的方式设置“errno”。 但我不知道这种保证有多强。 它是否需要C标准? Visual C / C ++会发生什么?