14得票3回答
使用C语言qsort函数遇到问题

#include <stdio.h> #include <stdlib.h> float values[] = { 4, 1, 10, 9, 2, 5, -1, -9, -2,10000,-0.05,-3,-1.1 }; int compare (const voi...

13得票3回答
超出翻译限制是未定义行为吗?有没有检查工具可以发现它?

原问题: 我正在查找C90标准,以了解在编写高度可移植代码时需要注意的事项,同时对编译器供应商的善意持有低信任度,并假设如果我做错了事情,我的软件可能会有时候导致某些人死亡。可以说我有点偏执。 目前,我正在考虑“翻译限制”(5.2.4.1 ANSI / ISO 9899:1990)。正如标...

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

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

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

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

10得票3回答
C89中是否支持可变长度数组?

我读到C89不支持变长数组,但以下实验似乎证明了它不是这样:#include <stdio.h> int main() { int x; printf("Enter a number: "); scanf("%d", &x); int a[x]; ...

7得票6回答
人们在C语言中构建对象时使用哪些技术/策略?

我特别关注于在C语言内部使用的对象,而不是像Python这样的解释型语言的核心对象实现。

109得票11回答
为什么应该使用strncpy而不是strcpy?

编辑:我已经添加了示例的来源。 我发现了这个示例:char source[MAX] = "123456789"; char source1[MAX] = "123456789"; char destination[MAX] = "abcdefg"; char destination1[MAX...

15得票3回答
如何将C结构体指定初始化器重写为C89(或MSVC C编译器)?

各位,我有这个问题: 通常在C99 GCC(cygwin / MinGW / linux)中,C结构体的初始化器有点符号语法。 就像这样://HELP ME HOW TO REWRITE THIS (in most compact way) to MSVC static struct my_...

123得票8回答
“struct hack”是否属于技术上未定义行为?

我正在询问的是众所周知的“结构体最后一个成员具有可变长度”的技巧。它大致如下: struct T { int len; char s[1]; }; struct T *p = malloc(sizeof(struct T) + 100); p->len = 100; ...

44得票7回答
如何查找我的当前编译器标准,例如是否为C90等。

我正在使用 Linux 计算机。有没有系统命令可以查找我正在使用的 C 编译器所遵循的标准?