这可能是一个愚蠢的问题,但我一直对此感到疑惑。C(或其他任何低级语言)甚至都具有源代码,还是编译器是“完成所有工作”(包括解析)的部分?如果是这样,不同的编译器难道没有不同的C语言吗?stdlib在哪里影响因素?我真的很想知道这是如何工作的。
Answers:
要添加其他出色的答案:
关于不同的方言-向C添加了一些特定于编译器的附加功能。您可以-std=...
向gcc提供命令行标志,以指定要使用的C标准,每个标准对语法都有细微的变化/补充,最常见的可能是c99
。
每个编译器都倾向于实现一些不同的附加功能,例如,typeof()
不在C标准中,因此编译器不必实现此功能,但是它很有用,并且大多数编译器都提供了它。这是gcc C扩展的列表
stdlib是C标准中指定的一组函数。与编译器非常相似,stdlib可以具有不同的实现。GNU实现和gcc一样都是开源的,但是还有其他编译器,也可能是stdlib的其他实现的封闭源代码。
编译器将确定从C到Assembly等的所有映射...但是就拥有它的人而言.....没有人真正拥有C,但是ANSI / ISO确定了标准
我会说C语言不是开源的。正如许多人指出的那样,您可以免费下载GNU许可的编译器和库,但是如果您想编写自己的C编译器,则需要遵循ISO C标准,并且ISO会为C语言的规范收取大量费用。 ,在发布时为$ 178。因此,真正的答案取决于您对免费和开源感兴趣的要素。
我不确定您对“开源”的定义是什么。
在标准化过程中,任何人都可以参加,但是如果您想投票,则需要付费才能加入自己的国家机构(例如,美国的ANSI,英国的BSI,法国的AFNOR等等。)。通常,大多数标准团体会员资格由公司支付。就是说,这个过程是相当开放的。您可以在标准网站上访问讨论文件。
这些标准本身也不是免费的。在ISO PDF店目前的售价为198瑞士法郎的C标准。该标准的草稿副本可轻松免费找到。
编译器和库都有很多开源实现。