[C] MSVC는 C 컴파일러를 제공하는가?
비주얼 스튜디오에는 MS에서 개발한 전용 c++ 컴파일러가 내장되어있는데, 이를 msvc라고 부른다.
msvc는 gcc, clang과 더불어 가장 대중적인 c/c++ 컴파일러 3대장이다.
저 둘과 좀 다른 점이 있다면, 상업용이며, c에 대한 지원이 부족하다는 것이다.
알다시피 c++은 c 문법의 대부분을 포함하지만, 갖고있지 않은 부분도 많다. 그래도 어지간한 c 코드는 c++ 컴파일러로도 잘 도는 특성이 있다.
뭐 이외에도 비주얼스튜디오로 c++ 프로젝트를 열어도 소스파일 확장자를 .c로 하면 c의 문법을 적용해주는 등의 편의를 제공하긴 한다.
하지만 앞서 언급했듯이 msvc는 태생이 c++컴파일러이며, 지금도 그러하다. 때문에 msvc는 c를 완벽히 지원해주지 않는다.
그렇다면 msvc에선 c에 대한 지원을 얼마나 보장해줄까?
그래서 찾아봤다.
C++은 원래 C89의 문법에 덧대서 탄생했다. 그래서 C++은 C89에서 지원하는 내용까지는 전부 포함한다.
그래서인지 조금 나가긴 했지만 msvc은 C90을 준수하는 것으로 문서화가 되어있다고 한다.
https://docs.microsoft.com/en-us/cpp/c-language/ansi-conformance
그러한 까닭으로 가변길이배열같은 C99의 기능은 확장자를 .c로 하더라도 msvc에선 사용할 수 없다. 혹은 보장할 수 없다.
하려면 gcc나 clang을 써야한다.