17得票3回答
printf是否需要使用%zu格式说明符?

我们在一个嵌入式平台上使用C89。我试图打印出size_t,但它没有起作用: 我们在嵌入式平台上使用C89。我尝试打印一个size_t,但无法运行:#include <stdio.h> int main(void) { size_t n = 123; print...

24得票4回答
(void)var实际上是什么意思?

请考虑以下main()函数:int main(int argc, char *argv[]) { return (0); } 使用cc -Wall -Wextra编译时,会生成警告信息“unused parameter”。 当我在函数中不需要使用参数时(例如在int参数没有被使用的信号...

16得票6回答
C语言中哪些部分最具可移植性?

我最近读到一篇关于Lua联合创始人Luiz H. de Figueredo和Roberto Ierusalimschy的访谈,他们在讨论Lua的设计和实现。这令我感到非常有趣。然而,讨论中的一部分让我想到了一些问题。Roberto将Lua称为“独立应用程序”(也就是说,它是纯ANSI C,不使...

12得票1回答
无操作C宏中全局范围分号警告的解决方法

在一个既可以作为C也可以作为C++构建的代码库中,我想制作一个宏,以利用C++11或更高版本中的static_assert。 (注:我知道有办法在C11之前的C中做到这一点,至少如果你愿意接受消息参数——虽然它不会完全适用于所有情况。但是为了论证的目的,让我们假设我有一些合法的需要使其不带消...

16得票3回答
在C语言中,“int”是否真的需要至少与“short”一样大?

我在不同的来源中(例如维基百科:http://en.wikipedia.org/wiki/C_variable_types_and_declarations#Size)多次看到:在C语言中,long long不比long类型小,而long类型也不比int类型小,int类型也不比short类型小...

8得票2回答
C89中的!0是否保证为1?

我已经查阅了标准,但没有找到提到的部分。 它是“除了0和1之外的任何东西”,还是取决于编译器?

25得票2回答
如何使用GCC编译适用于独立环境的代码?

我正在处理的代码应该可以在托管和独立环境下构建,对于后者,需要为某些stdlib函数提供私有实现。 只使用普通的工作站/构建服务器上的GCC,我能否可靠地测试这一点?使用GCC编译自由环境 - "-ffreestanding"选项看起来很有前途,但似乎它只禁用了内置函数并正确设置了STDC...

35得票6回答
在 ANSI (C89/90) C 中,表示一个字节的类型是什么?

是否有符合标准的方法在 ANSI (C89/90) C 中表示字节?我知道通常情况下,char 恰好是一个字节,但我理解这并不保证一定成立。此外,在 C99 标准中有 stdint.h,但在 C99 之前使用了什么? 我对8位特定和“字节”(sizeof(x) == 1)都很感兴趣。

15得票4回答
ANSI-C不支持inline关键字吗?

当编译像下面这样简单的东西时inline int test() { return 3; } int main() { test(); return 0; } 使用 gcc -c test.c,一切正常。如果添加 -ansi 关键字,gcc -ansi -c test.c,则会收到错误信息...

277得票6回答
整数除法的行为是什么?

例如,int result; result = 125/100; 或者result = 43/100; 结果是否总是除法的下取整?定义的行为是什么?