C/C++ 컴파일러
한 언어를 다른 언어로 번역해주는 것을 컴퓨터에서 컴파일러라고 한다. 컴퓨터는 0, 1로 이루어진 기계어만 읽을 수 있다. 당연히 영어, 숫자, 기호로 이루어진 C언어 소스코드는 읽지 못한다. 해서 소스코드를..
원본

컴파일러

한 언어를 다른 언어로 번역해주는 것을 컴퓨터에서 컴파일러라고 한다.
컴퓨터는 0, 1로 이루어진 기계어만 읽을 수 있다.
당연히 영어, 숫자, 기호로 이루어진 C언어 소스코드는 읽지 못한다.
해서 소스코드를 컴파일해서 프로그램을 컴퓨터가 읽을 수 있게 해줘야 하고,
컴파일을 수행하는 프로그램을 컴파일러라고 한다.

쓰이는 컴파일러

GCC

GNU Compiler Collection의 약자이다.
GNU 프로젝트의 오픈소스 컴파일러 컬렉션이다.
오랜 기간 개발돼온 만큼 성능 및 최적화가 잘 되어있고, 컴파일러 중에서 표준을 잘 지키는 편이다.
본래 UNIX/LINUX 개열 OS의 컴파일러이지만, Windows에서 동작하게 하는 프로젝트가 존재한다. (MinGW Cygwin)
C, C++, Objective-C, Fortran, Go, Ada 등의 언어를 지원한다.
OS 환경에서 제공하는 대부분의 저장소에서 다운 가능하다.
리눅스 환경에서 추천하는 컴파일러

GPL 라이선스를 따른다.

GCC, the GNU Compiler Collection- GNU Project - Free Software Foundation (FSF)
GCC 공식

MinGW

전술한 GCC를 윈도에서 사용하기 위한 프로젝트 중 하나.
후술할 Cygwin과 달리 윈도와 호환되지 않는 POSIX 환경을 제거하여, 윈도 환경과 네이티브로 연결되기 때문에 더 빠른 성능을 제공한다.
하지만, 성능을 얻은 대신, GCC가 제공하는 일부 라이브러리(특히 POSIX 표준)를 사용할 수 없다.
윈도 환경에서 추천하는 컴파일러
GCC파생이며 그로인해 GCC의 GPL라이선스를 따른다

Cygwin

Cygwin은 운영체제와 실행 파일 사이의 가상머신이 동작한다.
가상머신은 윈도에 없는 유닉스 계열 운영체제가 제공하는 기능들을 제공하는 역할을 한다.
리눅스 용으로 작성된 코드를 별 무리 없이 윈도에서 컴파일 할 수 있지만,
가상 환경인 만큼, 프로그램 실행이 느리고, 요구하는(의존하는) 라이브러리(.dll)이 존재한다.

Cygwin
Cygwin 공식

LLVM/Clang

Clnag은 LLVM 프로젝트 중 하나이고, C, C++, Objective-C를 지원한다.
C?C++ 표준을 잘 지원하고 GCC의 GPL과 달리 소스코드 공개 의무가 없다.
GCC의 GPL 라이선스로 인해 GCC를 대신해서 많이 대체되고 있다.
실제로 몇몇 운영체제는 GCC를 밀어내고, Clang을 기본 컴파일러로 사용한다.
다양한 디바이스를 타겟으로 빌드 할때 강점을 가진다.
GCC와 달리 윈도를 공식 지원한다.
UIUC 라이선스이다

The LLVM Compiler Infrastructure Project
LLVM Project

Pelles C

<A Retargetable C Compiler: Design and Implementation>라는 책에 소스 코드가 실려있는 C 컴파일러인 LCC의 파생 윈도 전용 프리웨어 컴파일러.
윈도 컴파일러 중 C 표준을 가장 잘 지킨다.
무려 C17 표준까지 지원.
가벼운 자체 툴을 제공한다.
윈도 환경에서 추천하는 컴파일러

smorgasbordet - Pelles C
Pelles C for Windows
Pelles 공식

Intel C++ Compiler

인텔에서 인텔 CPU에 최적화 시킨 컴파일러
인텔 외의 아키텍처에서는 성능이 보장되지 않는다.
C, C++ Fortran 컴파일러를 제공한다.

Data Parallel C++ for Cross-Architecture Applications
Reuse code across hardware targets (CPUs, GPUs, and FPGAs) with this open, standards-based C++ and SYCL alternative to proprietary compiler languages.
ICC 공식

Microsoft Visual C++ (MSVC)

비주얼 스튜디오는 C 컴파일러를 제공하지 않는다.
비주얼 스튜디오에서는 C++ 언어를 지원하는데, C++ 언어의 일부 C언어 문법을
포함하기에 C 코드를 실행시킬 수 있는 것이다.
C++는 C를 완전히 포함하지 않는다.
비주얼 스튜디오는 표준 C11은커녕, 표준 C99 기능조차 제대로 지원하지 않는다.
(명확히 하자면 애초에 C언어를 지원하지 않는다.)

제대로 C언어를 공부하기 위해서는 비주얼 스튜디오 환경에서 실습하지 않는 것이 좋다.

MS-EULA 라이선스이다.

Visual Studio IDE, 코드 편집기, Azure DevOps 및 App Center - Visual Studio
Visual Studio 개발자 도구 및 서비스로 모든 플랫폼에서 어떤 언어로든 앱 개발을 쉽게 할 수 있습니다. Mac 및 Windows 코드 편집기, IDE 또는 Azure DevOps를 체험해 보세요.

어떤 컴파일러를 쓸까요?

Linux UNIX MAC은 배포판 기본 컴파일러를 쓰면 될것이다.
라이선스 문제로 GCC를 사용할 수 없다면, Clang을 사용하는것이 좋을것이다.

Windows는 C++은 MSVC, C는 Clang이 좋을듯하다.