2

我正在继续学习 C 并希望遵守当前标准,但找到一个很好的参考似乎是个问题。

根据我在网上(主要通过 Google 和 Wikipedia)找到的信息,目前使用的标准是 C99,更正式的是 ISO/IEC 9899:1999 标准。

当我编写 C 代码时,我经常打开浏览器并进行简单的网络搜索,例如找出 stdio.h 函数 scanf 的确切返回值。大多数情况下,我只是想养成遵守当前标准的良好做法,但即使我搜索特定字符串“C99 printf”或类似的字符串,似乎也没有一个地方可以找到明确的规范.

所以我有两个问题:

1) 是否有一个可在线获得的中央 C99 规范,由负责该标准的组织维护?

[编辑]:第一个问题已经在这里得到解答:我在哪里可以找到当前的 C 或 C++ 标准文档?. 感谢 James McNellis 指出这一点。

2) 是否有可以解析 C 源文件以确保它符合 C99 规范的程序?我知道有这样的程序来解析 XHTML 文件,而且似乎也应该有一个用于 C99 的程序......

[编辑]:我还应该提到我正在使用 gcc 进行 C 开发,特别是版本 3.4.4。当我访问主要的 gcc 网站(http://gcc.gnu.org/)时,我仍然难以确定哪个编译器版本支持哪个 C 规范。

4

4 回答 4

2

编程语言 C 的当前标准是 ISO/IEC 9899:1999,发布于 1999-12-01

可以从 ISO 或 IEC 的成员机构购买已发布的 ISO 和 IEC 标准。

来自您在标准世界中最好的萌芽,ISO

还值得注意的是,NEXT C 标准的草案以 PDF 格式提供

于 2010-09-29T01:31:34.443 回答
2

根据您使用的编译器,您可以要求它为您检查。例如,使用 gcc 你会像这样运行它:

gcc -Wall -Wextra -pedantic -std=c99 -o program program.c

当然,您可以将 program.c 和 program 替换为您的程序名称。

-Wall-Wextra提供更多警告并告诉您您是否做了一些时髦的事情。-pedantic也提供了更多。

如果你真的想亲自遵循 ansi 规范,你可以使用-ansi我不使用它,因为我很懒,但它更合适。

于 2010-09-29T02:04:49.687 回答
1

实际上不可能分析源文件并最终确定它是否符合 C99 标准。C 在这方面与 XHTML 不同,因为 C 是图灵完备的语言,而 XHTML 不是。

当然可以找到许多不符合项的实例,但不可能全部找到。例如,考虑一个printf即时生成格式字符串的程序 - 您如何静态确定格式字符串将符合要求?如果它取决于给程序的输入怎么办?还考虑一个右移有符号整数的程序 - 如果所讨论的有符号整数从不为负,那么程序可能符合要求,但如果不是,那么它可能依赖于实现定义的结果。

于 2010-09-29T03:04:14.297 回答
0

可以在这里免费获得草稿。您也可以从ansi 商店购买官方版本。

于 2010-09-29T01:27:26.457 回答