C는 오픈 소스입니까?
이건 아마 멍청한 질문일 거예요, 하지만 나는 이것에 대해 한동안 궁금했어요.C(또는 기타 저수준 언어)는 소스를 가지고 있습니까?아니면 컴파일러는 파싱을 포함한 모든 작업을 수행하는 부품입니까?그렇다면 컴파일러마다 C사투리가 다를 수 없나요?stdlib 요소는 어디에 있습니까?저는 이것이 어떻게 작동하는지 정말 알고 싶습니다.
C언어는 소프트웨어의 일부가 아니라 정의된 표준이기 때문에 오픈 소스라고 하기보다는 오픈 스탠다드라고 말할 수 있습니다.
그러나 C용 컴파일러는 수없이 많으며, 그 중 상당수는 실제로 오픈 소스입니다.가장 주목할 만한 예는 GCC의 C 컴파일러로 모두 오픈소스 라이선스인 GNU General Public License(GPL)에 포함되어 있습니다.
더 많은 옵션이 있습니다.예를 들어, Watcom은 오픈 소스입니다.오픈 소스 C 컴파일러는 부족하지 않지만, 적어도 Windows 이외의 세계에서는 GCC가 가장 널리 보급되어 있습니다.
Windows 의 경우는, Watcom 또는 GCC 를 Cygwin 또는 MinGW 를 사용하는 것이 가장 좋습니다.
C는 C 컴파일러가 프로그램을 생성하는 방법을 지정하는 표준입니다.
음표에는 플라스틱이 없는 것처럼 C 자체에는 소스 코드가 없습니다.
GCC 등의 일부 C 컴파일러는 오픈소스입니다
C는 단지 언어일 뿐이고, 그것 또한 표준화된 언어이다."모든 작업을 수행하는" 컴파일러가 거의 대부분입니다.C99 ANSI 표준 이전에는 Borland C나 다른 경쟁 컴파일러가 C 언어를 독자적인 방법으로 구현했습니다.
stdlib
는 ANSI C 구현에 필요한 표준 라이브러리의 합의된 컬렉션입니다.
기타 훌륭한 답변에 추가:
다른 방언에 대해서 - 컴파일러 고유의 기능이 C에 추가되어 있습니다. 플래그 「」를 할 수 .-std=...
하는 C 구문에는 인 것은 "C"입니다.각 표준에는 구문에 약간의 변화나 추가가 있습니다.가장 일반적인 것은 다음과 같습니다.c99
몇 다른 추가 을 구현하는 경향이 예를 들어 다음과 같습니다.typeof()
는 C 규격에 포함되어 있지 않기 때문에 컴파일러가 이 기능을 구현할 필요는 없지만 그래도 편리하고 대부분의 컴파일러가 이 기능을 제공합니다.다음은 gcc C 확장 목록입니다.
stdlib는 C 표준으로 지정된 함수 세트입니다.컴파일러와 마찬가지로 stdlib에는 다른 구현이 있을 수 있습니다.GNU 실장은 gcc와 마찬가지로 오픈 소스이지만 다른 컴파일러가 있으며 stdlib의 다른 실장도 클로즈드 소스일 수 있습니다.
컴파일러는 C에서 어셈블리 등에 대한 모든 매핑을 결정합니다.그러나 누군가가 그것을 소유하고 있는 한, 실제로 C를 소유하고 있는 사람은 없습니다만, ANSI/ISO는 표준을 결정합니다.
GCC의 C 컴파일러는 C로 작성되어 있습니다.따라서 C로 작성된 C 컴파일러가 적어도1개 있는 것으로 알고 있습니다.
GNU gnustdlib
는 C됩니다.(glibc)† C(stdio.h, stdlib).h)어울리다.하지만 어셈블리 언어로 쓰인 부분도 있습니다.
정말 좋은 질문입니다.언어 표준(실장 없음!)을 엄격하고 명확한 언어로 "소스 코드" 형태로 정의하는 방법이 있습니다.불행히도 C를 포함한 모든 오래된 언어들이 제대로 정의되어 있지 않습니다.그러나 그 정의를 소스코드 형식으로 변환하는 것은 여전히 가능합니다.
또 다른 접근방식은 운용 시멘틱스를 통해 언어를 정의하는 것입니다.종종 단순한(그리고 비효율적인) 참조 구현의 형태로 정의됩니다.
Helgi Hraffn Gunnarsson이 주요 답을 썼지만, 나는 당신이 효과적으로 사투리로 끝날 수 있다는 것을 주목할 가치가 있다고 생각했다.
컴파일러는, 서포트하고 있는 표준(현재는 거의 같은 버전일 가능성이 있습니다)에 관해서도 같은 작업을 실시할 필요가 있습니다만, 회색 영역이 있습니다.예를 들어 컴파일러가 '정의되지 않은' 기능에 대해 작동하는 방식입니다.C 사양에 특정 케이스에 대해 동작이 정의되지 않은 경우 컴파일러는 원하는 대로 할 수 있습니다.
컴파일러 메이커가 라이브러리(및 새로운 라이브러리)에 추가한 기능의 예도 있습니다.이것은, 특정의 플랫폼의 특성을 서포트하거나, 경쟁상의 우위성을 낳거나, 간단하게 생활을 용이하게 하기 위해서입니다.냉소적인 것은 이들 중 일부가 특정 컴파일러에 사람들을 가두는 데 도움이 되도록 추가되었음을 시사할 수 있습니다.
언어로서의 C는 오픈소스가 아니라고 생각합니다.많은 사람들이 지적했듯이, GNU 라이선스 컴파일러와 라이브러리를 무료로 다운로드할 수 있지만, C 컴파일러를 직접 작성하려면 ISO C 표준을 따라야 하며, ISO는 C 언어 사양에 대해 하드캐시를 청구해야 합니다.이것은 게시 시 $178입니다.즉, 그 답은 자유롭고 오픈 소스에 관심이 있는 요소에 따라 달라집니다.
"오픈 소스"에 대한 당신의 정의가 무엇인지 잘 모르겠습니다.
표준화 과정에서는 누구나 참여할 수 있지만 투표가 가능하려면 미국 ANSI, 영국 BSI, 프랑스 AFNOR 등 국가기관에 가입하기 위해 비용을 지불해야 합니다.원칙적으로 대부분의 표준적인 조직원 자격은 기업에서 지불한다.그렇다고는 해도, 그 과정은 꽤 열려 있습니다.표준 웹 사이트에서 토론 문서에 액세스할 수 있습니다.
기준 자체는 무료가 아니다.ISO pdf 스토어에서는 현재 C 스탠다드를 198스위스프랑에 판매하고 있습니다.표준 초안 사본은 무료로 쉽게 찾을 수 있습니다.
컴파일러와 라이브러리의 오픈 소스 실장은 많이 있습니다.
언급URL : https://stackoverflow.com/questions/5099384/is-c-open-source
'programing' 카테고리의 다른 글
수술 조건과 함께 #ifdef를 사용하는 방법 (0) | 2022.08.29 |
---|---|
비동기 Vuex 작업에서 구성 요소 캐치 오류 (0) | 2022.08.29 |
VueX - 액션과는 다른 모듈에서의 디스패치액션 (0) | 2022.08.29 |
"198.1994.Out Of Memory Error: Maven 빌드의 Perm Gen 공간" (0) | 2022.08.29 |
스위치 문: 기본값은 마지막 대/소문자여야 합니다. (0) | 2022.08.27 |