16得票2回答
ANSI C和ISO C有什么区别?

我知道C语言有ANSI标准和ISO标准,这两个标准有什么区别吗?如果有,是什么?如果没有区别,那么为什么需要两个标准?

14得票2回答
错误:初始化元素在加载时不可计算。

我有一个函数,它接受一个结构体,我正在尝试将其变量存储到数组中:int detect_prm(Param prm) { int prm_arr[] = {prm.field1, prm.field2, prm.field3}; return 0; } 使用 gcc -Wall -an...

14得票2回答
我应该使用"-ansi"还是明确的"-std=..."作为编译器标志?

我阅读到 ANSI C 并不完全等同于 ISO C,编译器对“-ansi”的解释也可能有所不同。(gcc 将其映射为 C90,clang 将其映射为 C89)目前,我倾向于使用“-std=…”而非“-ansi”,因为这样可以明确地显示使用的标准。但由于我特别关注在 Linux、Windows ...

12得票4回答
所有结构体标识符都会自动进行前向声明。

在回答“warning: assignment from incompatible pointer type for linklist array”时,我注意到任何未声明的标识符前面加上struct关键字都会被视为前向声明的标识符。 例如下面的程序编译正常:/* Compile with "g...

12得票2回答
初始化位域。

当你写代码时 struct { unsigned a:3, b:2; } x = {10, 11}; 在 ANSI C(C89)中,x.b 是否保证为 3?我已经阅读了标准多次,但似乎没有找到确切的情况。 例如,“无法由结果无符号整数类型表示的结果会对大于结果无符号整数类型所能...

12得票2回答
在C99中,如何在运行时计算变长数组的大小?

在C89中,数组的长度在编译时就已知。但是在C99中,由于可变长度数组的引入,数组的长度可能在运行时才确定。 那么它是如何计算的呢? 为什么不能以同样的方式计算动态分配数组的长度呢?

12得票3回答
如何在 ANSI C 中 printf 带重音的字符(例如á é í ó ú)

我尝试使用一些重音字符(如á é í ó ú)进行printf: printf("my name is Seán\n"); DEVC++ IDE中的文本编辑器显示它们很好 - 即源代码看起来很好。我猜我需要使用stdio.h之外的某个库,也许是普通printf的某个变体。 我正在使用运行...

11得票2回答
C11标准文档

从这个SO受保护的问题开始,我试图理解这些文件之间的区别: 9899 2012成本为$60 9899 2011成本为$265 正如您所看到的,这些文件的价格差异很大,我不知道更便宜的那个是有效的还是像草稿或真实标准的剪切副本。 有人购买了INCITS的文件吗? 编辑 正如@C...

11得票3回答
如果我包含“-ansi”编译器选项,为什么我的C++0x代码无法编译?

我遇到了一个非常奇怪的错误,只有在使用 ansi 标志时才会出现。 #include <memory> class Test { public: explicit Test(std::shared_ptr<double> ptr) {} }; 这是编...

11得票2回答
一个符合 ANSI C 标准的实现是否可以在其标准库中包含额外的函数?

一个符合 ANSI C 标准的实现是否允许在其标准库中包含额外的类型和函数,超出标准所列举的那些?(理想的答案应该引用 ANSI 标准的相关部分。) 我之所以特别提问,是因为 Mac OS 10.7 在 stdio.h 中声明了 getline 函数,即使使用 -ansi 标志编译时也是如此...