C는 오픈 소스입니까?
이것은 아마도 어리석은 질문이지만 나는 이것에 대해 한동안 궁금해했습니다. C (또는 다른 저수준 언어)가 소스를 가지고 있습니까? 아니면 컴파일러가 파싱을 포함하여 "모든 작업을 수행"하는 부분입니까? 그렇다면 컴파일러마다 다른 C 방언을 사용할 수 없습니까? stdlib는 이것에 대해 어디에 있습니까? 이것이 어떻게 작동하는지 정말로 알고 싶습니다.
C 언어는 소프트웨어가 아니라 정의 된 표준 이므로 오픈 소스라고 말하는 것이 아니라 오픈 표준이라고 말할 수 있습니다.
그러나 C를위한 수많은 컴파일러가 있으며 그 중 많은 것들이 실제로 오픈 소스입니다. 가장 주목할만한 예는 GCC의 C 컴파일러로 , 모두 오픈 소스 라이선스 인 GNU General Public License (GPL) 하에 있습니다.
더 많은 옵션이 있습니다. 예를 들어 Watcom 은 오픈 소스입니다. 오픈 소스 C 컴파일러는 부족하지 않지만 의심 할 여지없이 적어도 비 Windows 세계에서 가장 널리 퍼진 컴파일러는 GCC입니다.
Windows의 경우 가장 좋은 방법은 Cygwin 또는 MinGW 를 사용하는 Watcom 또는 GCC 일 것입니다 .
C는 C 컴파일러가 프로그램을 생성하는 방법을 지정하는 표준입니다.
음표에 플라스틱이없는 것처럼 C 자체에는 소스 코드가 없습니다.
GCC와 같은 일부 C 컴파일러는 오픈 소스입니다.
C는 언어 일 뿐이고 표준화 된 언어이기도합니다. "모든 작업을 수행"하는 것은 거의 컴파일러입니다. 컴파일러마다 다른 방언이있었습니다. C99 ANSI 표준 이전에는 Borland C 및 다른 경쟁 컴파일러와 같은 것이 있었는데, C 언어를 환상적인 방식으로 구현했습니다.
stdlib
ANSI C 구현에 필요한 표준 라이브러리의 합의 된 모음입니다.
다른 훌륭한 답변에 추가하려면 :
다른 방언과 관련하여 컴파일러에 특정한 몇 가지 추가 기능이 C에 추가되었습니다. -std=...
gcc에 명령 줄 플래그 를 제공하여 사용하려는 C 표준을 지정할 수 있으며, 각각 구문에 약간의 변형 / 추가가 있으며, 가장 일반적인 것은 아마도 c99
.
예를 들어 각 컴파일러는 몇 가지 다른 추가 기능을 구현하는 경향이 있습니다. 예를 들어 typeof()
C 표준에 포함되어 있지 않으므로 컴파일러는이를 구현할 필요가 없지만 그럼에도 불구하고 유용하며 대부분의 컴파일러에서 제공합니다. 다음은 gcc C 확장 목록입니다.
stdlib는 C 표준에 지정된 함수 세트입니다. 컴파일러와 마찬가지로 stdlib는 다른 구현을 가질 수 있습니다. GNU 구현은 gcc와 마찬가지로 오픈 소스이지만 다른 컴파일러가 있으며 닫힌 소스 인 stdlib의 다른 구현 일 수 있습니다.
컴파일러는 C에서 어셈블리 등으로의 모든 매핑을 결정합니다.하지만 누군가가 그것을 소유하고있는 한 아무도 실제로 C를 소유하지 않지만 ANSI / ISO가 표준을 결정합니다.
GCC의 C 컴파일러는 C로 작성되었습니다. 따라서 C로 작성된 C 컴파일러가 하나 이상 있다는 것을 알고 있습니다 .
GNU stdlib
(glibc)도 C (stdio.h, stdlib.h)로 작성되었습니다. 그러나 어셈블리 언어로 작성된 일부 부품도 있습니다.
정말 좋은 질문입니다. 엄격하고 명확한 언어로 "소스 코드"의 형태로 언어 표준 (구현이 아님)을 정의 하는 방법 이 있습니다. 불행히도 C를 포함한 모든 이전 언어는 잘못 정의되어 있습니다. 그러나 그 정의를 소스 코드 형태로 번역하는 것은 여전히 가능합니다.
또 다른 접근 방식은 운영 의미 체계 를 통해 언어를 정의하는 것입니다 . 종종 단순하고 비효율적 인 참조 구현의 형태로 제공됩니다.
Helgi Hrafn Gunnarsson이 주요 답변을 작성했지만 방언으로도 효과적으로 끝낼 수 있다는 점에 주목할 가치가 있다고 생각했습니다.
컴파일러는 지원하는 표준 (요즘은 거의 모든 버전이 동일해야 함)과 관련하여 동일한 작업을 수행해야하지만 회색 영역이 있습니다. 예를 들어 컴파일러가 '정의되지 않은'기능에 대해 작동하는 방식. C 사양에서 특정 경우에 대한 동작이 정의되지 않았다고 말하면 컴파일러는 원하는 작업을 거의 수행 할 수 있습니다.
또한 특정 플랫폼 특성을 지원하거나 경쟁 우위를 창출하거나 단순히 삶을 더 쉽게 만들기 위해 컴파일러 제작자가 라이브러리에 추가 한 함수 (및 추가 된 새 라이브러리)의 예도 있습니다. 냉소적 인 사람은 사람들을 특정 컴파일러에 묶는 데 도움이되도록 이들 중 일부가 추가되었다고 제안 할 수 있습니다.
나는 언어로서의 C가 오픈 소스가 아니라고 말할 것입니다. 많은 사람들이 지적했듯이 GNU 라이센스 컴파일러와 라이브러리를 무료로 다운로드 할 수 있지만 자신의 C 컴파일러를 작성하려면 ISO C 표준을 따라야하며 ISO는 C 언어 사양에 대해 현금을 청구해야합니다. , 게시 시점에 $ 178입니다. 따라서 실제로 대답은 무료 및 오픈 소스에 관심이있는 요소에 따라 다릅니다.
참고 URL : https://stackoverflow.com/questions/5099384/is-c-open-source
'Programing' 카테고리의 다른 글
자주 실행되도록 작업을 어떻게 설정합니까? (0) | 2020.10.26 |
---|---|
C ++ 파일 스트림 (fstream)을 사용하여 파일 크기를 어떻게 결정할 수 있습니까? (0) | 2020.10.26 |
Android에서 EditText를 비활성화하는 방법 (0) | 2020.10.26 |
프로세스가 시작될 때까지 Process.Start 대기 만들기 (0) | 2020.10.26 |
Serializable 특성 사용과 ISerializable 구현의 차이점은 무엇입니까? (0) | 2020.10.25 |