Compatibility of C and C++
http://dbpedia.org/resource/Compatibility_of_C_and_C++
The C and C++ programming languages are closely related but have many significant differences. C++ began as a fork of an early, pre-standardized C, and was designed to be mostly source-and-link compatible with C compilers of the time. Due to this, development tools for the two languages (such as IDEs and compilers) are often integrated into a single product, with the programmer able to specify C or C++ as their source language.
rdf:langString
Языки программирования C и C++ тесно связаны, но имеют существенные различия. C++ создавался как потомок достандартизированного C, по большей части совместимый с ним на тот момент на уровне исходного кода и компоновки. В связи с этим средства разработки для обоих языков (такие, как среды разработки и компиляторы) часто интегрируются в один продукт, при этом программист может выбрать C или C++ в качестве языка исходного кода.
rdf:langString
C语言和C++的关系相當密切,但是也存在许多显著的差异。C++标准起源于早期C标准, 并被设计为与当时的C语言在源代码编写和链接方面很大程度上兼容. 因此,两种语言的开发工具(例如IDE和编译器)通常被集成到单个产品中,程序员可以自己选择编写的是C还是C++,开发工具通常会根据程序员的选择使用不同的编译器和链接器或不同的库。 但是,C并不是C++的子集, 一般的 C 代码不经修改很难被一些严格符合C++标准的C++编译器成功编译;同样,C++ 引入了许多 C 中没有的特性,所以,几乎所有用 C++ 编写的代码都无法被 C 编译器成功编译。在这篇文章中,我们主要讨论的是它们在公共部分的差异,比如在C语言中合法的代码到了C++中成为了不合法的代码,或一段代码在C和C++中表现出不同的行为。 C++的创始人Bjarne Stroustrup建议 C和C++应该尽可能减小差异,以最大限度地提高这两种语言的兼容性;而另一些人则认为C和C++毕竟是两种不同的语言——虽然C++起源于C——因此它们之间的兼容性并不是那么重要。 而ANSI是这样看的:「我们赞同保持C与C++的最大公共子集原则」,同时「保持它们的差别,使这两种语言继续独立发展」,「......委员会希望C++成为重要的和强有力的语言。」
rdf:langString
rdf:langString
Compatibility of C and C++
rdf:langString
Совместимость C и C++
rdf:langString
C与C++的兼容性
xsd:integer
4573232
xsd:integer
1106889879
rdf:langString
The C and C++ programming languages are closely related but have many significant differences. C++ began as a fork of an early, pre-standardized C, and was designed to be mostly source-and-link compatible with C compilers of the time. Due to this, development tools for the two languages (such as IDEs and compilers) are often integrated into a single product, with the programmer able to specify C or C++ as their source language. However, C is not a subset of C++, and nontrivial C programs will not compile as C++ code without modification. Likewise, C++ introduces many features that are not available in C and in practice almost all code written in C++ is not conforming C code. This article, however, focuses on differences that cause conforming C code to be ill-formed C++ code, or to be conforming/well-formed in both languages but to behave differently in C and C++. Bjarne Stroustrup, the creator of C++, has suggested that the incompatibilities between C and C++ should be reduced as much as possible in order to maximize interoperability between the two languages. Others have argued that since C and C++ are two different languages, compatibility between them is useful but not vital; according to this camp, efforts to reduce incompatibility should not hinder attempts to improve each language in isolation. The official rationale for the 1999 C standard (C99) "endorse[d] the principle of maintaining the largest common subset" between C and C++ "while maintaining a distinction between them and allowing them to evolve separately", and stated that the authors were "content to let C++ be the big and ambitious language." Several additions of C99 are not supported in the current C++ standard or conflicted with C++ features, such as variable-length arrays, native complex number types and the restrict type qualifier. On the other hand, C99 reduced some other incompatibilities compared with C89 by incorporating C++ features such as // comments and mixed declarations and code.
rdf:langString
Языки программирования C и C++ тесно связаны, но имеют существенные различия. C++ создавался как потомок достандартизированного C, по большей части совместимый с ним на тот момент на уровне исходного кода и компоновки. В связи с этим средства разработки для обоих языков (такие, как среды разработки и компиляторы) часто интегрируются в один продукт, при этом программист может выбрать C или C++ в качестве языка исходного кода. Однако, C не является подмножеством C++, поэтому нетривиальные программы на C не будут компилироваться на C++ без изменений. Также C++ вводит множество возможностей, недоступных в C, и на практике почти весь код, написанный на C++, не соответствует коду на C. Однако в этой статье основное внимание уделяется различиям, которые приводят к тому, что соответствующий код C является неправильно написанным (англ. ill-formed) кодом на C++ или соответствующим/хорошо написанным (англ. conforming/well-formed) на обоих языках, но может вести себя по-разному на C и C++. Бьёрн Страуструп, создатель C++, предложил что несовместимость между C и C++ должна быть уменьшена насколько это возможно, чтобы обеспечить максимальное взаимодействие между двумя языками. Другие утверждают, что, поскольку C и C++ — это два разных языка, совместимость между ними полезна, но не жизненно важна; согласно их мнению, усилия по уменьшению несовместимости не должны препятствовать попыткам улучшить каждый язык в отдельности. Третьи утверждают, что почти каждая синтаксическая ошибка, которую можно допустить в Си, была пересмотрена в C++ таким образом, чтобы порождать компилируемый, хоть не обязательно корректный код. Официальное обоснование стандарта C 1999 года (C99) «поддерживает принцип сохранения наибольшего общего подмножества» между C и C++, «сохраняет при этом различия между ними и позволяет развиваться отдельно», там также утверждается, что авторы были «довольны тем, что C++ стал большим и амбициозным языком». Некоторые нововведения C99 не поддерживаются в текущем стандарте C++ или конфликтуют с отдельными возможностями C++, например, массивы переменной длины, собственные комплексные типы данных и квалификатор типа restrict. С другой стороны, C99 уменьшил некоторые другие несовместимости по сравнению с C89, включив такие функции C++, как однострочные комментарии //, а также смешение объявлений и кода.
rdf:langString
C语言和C++的关系相當密切,但是也存在许多显著的差异。C++标准起源于早期C标准, 并被设计为与当时的C语言在源代码编写和链接方面很大程度上兼容. 因此,两种语言的开发工具(例如IDE和编译器)通常被集成到单个产品中,程序员可以自己选择编写的是C还是C++,开发工具通常会根据程序员的选择使用不同的编译器和链接器或不同的库。 但是,C并不是C++的子集, 一般的 C 代码不经修改很难被一些严格符合C++标准的C++编译器成功编译;同样,C++ 引入了许多 C 中没有的特性,所以,几乎所有用 C++ 编写的代码都无法被 C 编译器成功编译。在这篇文章中,我们主要讨论的是它们在公共部分的差异,比如在C语言中合法的代码到了C++中成为了不合法的代码,或一段代码在C和C++中表现出不同的行为。 C++的创始人Bjarne Stroustrup建议 C和C++应该尽可能减小差异,以最大限度地提高这两种语言的兼容性;而另一些人则认为C和C++毕竟是两种不同的语言——虽然C++起源于C——因此它们之间的兼容性并不是那么重要。 而ANSI是这样看的:「我们赞同保持C与C++的最大公共子集原则」,同时「保持它们的差别,使这两种语言继续独立发展」,「......委员会希望C++成为重要的和强有力的语言。」 截止到C++20和C2x,C++ 还是不支持部分C语言特性,如变长数组,原生复数支持和restrict。另一方面,与C89相比,C99通过合并C++功能(例如//注释,允许声明出现在代码中而不只是在函数头)减少了一些其他不兼容性。
xsd:nonNegativeInteger
25988