[컴파일러] Visual Studio 컴파일러 질문

카구@Google의 이미지

1. Visual Studio에서 사용하는 컴파일러?
구글 검색의 힘을 빌려 C 언어의 IDE와 그 IDE가 사용하는 C 컴파일러도 엄청나게 많구나... 하는 생각이 들었습니다. 그러면 Visual Studio에서 사용하는 C 언어(.c) 컴파일러는 무엇인가요...? 찾아도 찾기가 너무 어렵더군요 Orz...

2. ANSI 규격? 그냥 미국 표준 아닌가요...?
이 또한 검색해보니 89년도에 만들어진 C 언어의 표준 규격이라고 합니다. 대문자, 소문자, 특수문자 등... 이런 규칙을 ANSI 규격에 맞추어 작성한 것이라고 이해하고 있는데 이게 맞나요...?

이런 이상한(?) 주제의 글을 질문으로 올려서 너무 죄송합니다...!
IT 책을 만드는 편집자의 입장에서 이런 기준이 중요할 수밖에 없어졌네요... ㅠㅠ 원래 학부생때는 이런 내용을 궁금해 할 생각조차도 못했는데 말이죠...!

 의 이미지

1. Visual Studio (더 정확히는, Visual C++)를 설치하면 설치 경로 안에 아래와 같은 프로그램이 있습니다:
(구체적인 경로는 버전마다 조금씩 다를 수 있겠군요)
cl.exe
link.exe

위 프로그램들이 각각 VC++에서 디폴트로 사용하는 컴파일러 및 링커 인터페이스입니다.
유감스럽게도 따로 이름은 없어요. 그냥 Microsoft® C/C++ Compiler, Microsoft® Incremental Linker일 뿐.

IDE를 거치지 않고 이들을 직접 실행시켜서 컴파일 하는 방법도 있기는 합니다. 아래 링크 참조:
https://msdn.microsoft.com/en-us/library/f35ctcxw.aspx
https://msdn.microsoft.com/en-us/library/wk21sfcf.aspx
https://msdn.microsoft.com/en-us/library/t2fck18t.aspx

2. ANSI C, 즉 ANSI(American National Standards Institute; 미국 국립 표준 협회)에서 만든 C언어 표준을 말합니다.

C언어 표준은 C언어의 문법, 의미론, 라이브러리 함수 등을 엄밀하게 정의하여, C언어로 작성된 프로그램이 이식성을 가지도록 보장해 줍니다. (네. 당연히 C언어 소스 코드가 어떤 문자들로 구성되어야 하는지도 규정하고 있습니다. 근데 질문자님의 "대문자, 소문자, 특수문자 등..."은 무슨 맥락일까요?)

1972년 등장한 이래 다양한 컴파일러 벤더들에 의해 구현되었던 C언어는 1989년에 이르러 ANSI에 의해 표준화되게 됩니다. 이 때 만들어진 표준을 ANSI C 혹은 C89라고 부릅니다.

1990년에 ISO(International Organization for Standardization; 국제 표준화 기구)에서 위 표준을 받아들여 C90을 만들고, 이후 몇 차례의 개정(C95, C99)을 하여 현재 최신 표준은 C11입니다.

C언어 표준화의 역사에 대해서 검색해 보시면 좋은 자료들이 많을 겁니다. 예를 들어:
http://c-faq.com/~scs/cgi-bin/faqcat.cgi?sec=ansi

김정균의 이미지

Visual Studio 에 포함된 c++ compiler 이름이 Visual C++ 아니었나요? Visual studio 정보에 보면 VC++ 12.0 과 같이 compiler 정보가 나오고, VC++이 Visual C++ 의 약어이지 싶은데요.

 의 이미지

1. Visual C++는 그보다 넓은 의미를 가집니다. 아래 링크만 봐도 그저 compiler가 아닌 IDE(Integrated Development Environment; 통합 개발 환경)로서 다양한 기능을 가지고 있지요.

https://docs.microsoft.com/en-us/cpp/#pivot=features

사실 지금은 Visual Studio가 하나의 개발환경으로 통합되어 버려서 구분짓기가 어렵지만, 예전에는 Visual C++, Visual Basic 등을 독립적인 IDE로 설치 및 실행하던 시절이 있었습니다. Visual C++ 6.0 기억하시는 분? 이게 벌써 20년 전 툴이네요.

2. 어찌됐든 Visual C++ compiler라고 해도 맞는 표현인 것 같네요.
Visual C++ 안에 있는 컴파일러는 단 하나뿐이니까요.

https://msdn.microsoft.com/en-us/library/ms235639(v=vs.100).aspx

MSDN에서도 Visual C++ includes a C++ compiler that ~와 같이 소개한 뒤, 줄여서 The Visual C++ compiler라고 하고 있지요.

조금 더 조사해 보니 VC++ 2015에서 IDE를 제외한 빌드 도구를 따로 배포하기도 했던 것 같습니다.

http://landinghub.visualstudio.com/visual-cpp-build-tools

어쨌건, MS에서 VC++의 컴파일러에만 특별한 이름을 따로 붙여 준 것 같지는 않습니다. Microsoft® C/C++ Compiler라는 이름은 cl.exe 바이나리 속성에 지정되어 있던 것이었는데, 더 찾아보니 Microsoft C/C++는 Visual C++ 이전에 있었던 제품 이름이라고 합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.