Search

VSCODE C์–ธ์–ด ์„ค์น˜

MinGW ์„ค์น˜ (C ์ปดํŒŒ์ผ๋Ÿฌ)

MinGW ๋‹ค์šด๋กœ๋“œ

GCC (GNU Compiler Collection)๋ž€?

GCC๋Š” GNU ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ์†Œ์Šค ์ปดํŒŒ์ผ๋Ÿฌ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. C, C++, Objective-C, Fortran, Ada ๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

โ€ข
์˜คํ”ˆ์†Œ์Šค: ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
ํฌ๋กœ์Šค ํ”Œ๋žซํผ: Windows, Linux, macOS ๋“ฑ ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์ตœ์ ํ™”: ๋‹ค์–‘ํ•œ ์ตœ์ ํ™” ์˜ต์…˜์„ ์ œ๊ณตํ•˜์—ฌ ํšจ์œจ์ ์ธ ์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
โ€ข
ํ‘œ์ค€ ์ค€์ˆ˜: C/C++ ์–ธ์–ด ํ‘œ์ค€(ANSI C, ISO C++)์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ(Compiler)๋ž€?

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์‚ฌ๋žŒ์ด ์ž‘์„ฑํ•œ ๊ณ ์ˆ˜์ค€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด(C, C++, Java ๋“ฑ)๋ฅผ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ €์ˆ˜์ค€ ์–ธ์–ด(๊ธฐ๊ณ„์–ด ๋˜๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ์–ด)๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ฃผ์š” ์—ญํ• 

โ€ข
์†Œ์Šค ์ฝ”๋“œ ๋ถ„์„: ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ๋ฌธ๋ฒ•์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์ค‘๊ฐ„ ์ฝ”๋“œ ์ƒ์„ฑ: ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ค‘๊ฐ„ ํ‘œํ˜„์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
์ตœ์ ํ™”: ์ฝ”๋“œ๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๊ธฐ๊ณ„์–ด ์ƒ์„ฑ: ์ตœ์ข…์ ์œผ๋กœ ์ปดํ“จํ„ฐ๊ฐ€ ์ง์ ‘ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ ๊ณผ์ •

1.
์ „์ฒ˜๋ฆฌ(Preprocessing): #include, #define ๋“ฑ์˜ ์ „์ฒ˜๋ฆฌ ์ง€์‹œ๋ฌธ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
2.
์ปดํŒŒ์ผ(Compilation): ์ „์ฒ˜๋ฆฌ๋œ ์ฝ”๋“œ๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
3.
์–ด์…ˆ๋ธ”(Assembly): ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ฅผ ๊ธฐ๊ณ„์–ด(์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ)๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
4.
๋งํ‚น(Linking): ์—ฌ๋Ÿฌ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ vs ์ธํ„ฐํ”„๋ฆฌํ„ฐ

๊ตฌ๋ถ„
์ปดํŒŒ์ผ๋Ÿฌ
์ธํ„ฐํ”„๋ฆฌํ„ฐ
๋ณ€ํ™˜ ๋ฐฉ์‹
์ „์ฒด ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ์— ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜
์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์ฝ์–ด ์‹คํ–‰
์‹คํ–‰ ์†๋„
๋น ๋ฆ„
์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ
์—๋Ÿฌ ๊ฒ€์ถœ
์ปดํŒŒ์ผ ์‹œ ์ „์ฒด ์—๋Ÿฌ ๊ฒ€์ถœ
์‹คํ–‰ ์ค‘ ์—๋Ÿฌ ๋ฐœ๊ฒฌ
์˜ˆ์‹œ
C, C++, Java
Python, JavaScript, Ruby
์‹คํ–‰ ํŒŒ์ผ
์ƒ์„ฑ๋จ (.exe)
์ƒ์„ฑ๋˜์ง€ ์•Š์Œ

C์–ธ์–ด์™€ ์ปดํŒŒ์ผ๋Ÿฌ

C์–ธ์–ด๋Š” ์ปดํŒŒ์ผ ์–ธ์–ด์ด๋ฏ€๋กœ, ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ(.c ํŒŒ์ผ)๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์ปดํŒŒ์ผ๋Ÿฌ(GCC, MinGW ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ ํŒŒ์ผ(.exe)๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MinGW์™€ ๋‹ค๋ฅธ C ์ปดํŒŒ์ผ๋Ÿฌ ๋น„๊ต

์ปดํŒŒ์ผ๋Ÿฌ
ํ”Œ๋žซํผ
ํŠน์ง•
์žฅ์ 
๋‹จ์ 
MinGW
Windows
GCC ๊ธฐ๋ฐ˜, GNU ๋„๊ตฌ ๋ชจ์Œ
๋ฌด๋ฃŒ, ๊ฐ€๋ฒผ์›€, Windows ๋„ค์ดํ‹ฐ๋ธŒ ๋นŒ๋“œ
POSIX ์ง€์› ์ œํ•œ์ 
MSVC
Windows
Microsoft Visual C++ ์ปดํŒŒ์ผ๋Ÿฌ
Windows API ์ตœ์ ํ™”, Visual Studio ํ†ตํ•ฉ
์œ ๋ฃŒ(Community ์—๋””์…˜์€ ๋ฌด๋ฃŒ), Windows ์ „์šฉ
Clang
ํฌ๋กœ์Šค ํ”Œ๋žซํผ
LLVM ๊ธฐ๋ฐ˜, ๋ชจ๋˜ ์ปดํŒŒ์ผ๋Ÿฌ
๋น ๋ฅธ ์ปดํŒŒ์ผ, ๋ช…ํ™•ํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€, GCC ํ˜ธํ™˜
์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ
GCC
ํฌ๋กœ์Šค ํ”Œ๋žซํผ
GNU Compiler Collection
๊ด‘๋ฒ”์œ„ํ•œ ํ”Œ๋žซํผ ์ง€์›, ์•ˆ์ •์ , ํ‘œ์ค€ ์ค€์ˆ˜
์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Œ
TCC
ํฌ๋กœ์Šค ํ”Œ๋žซํผ
Tiny C Compiler
๋งค์šฐ ๋น ๋ฅธ ์ปดํŒŒ์ผ ์†๋„, ์ž‘์€ ํฌ๊ธฐ
์ตœ์ ํ™” ๊ธฐ๋Šฅ ์ œํ•œ์ 

๊ฐ ์ปดํŒŒ์ผ๋Ÿฌ ์„ ํƒ ๊ฐ€์ด๋“œ

โ€ข
MinGW: Windows์—์„œ ๊ฐ€๋ณ๊ฒŒ C/C++ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์„ ๋•Œ
โ€ข
MSVC: Windows ์ „์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ, Visual Studio ์‚ฌ์šฉ ์‹œ
โ€ข
Clang: ๋ชจ๋˜ C++ ๊ธฐ๋Šฅ ํ™œ์šฉ, ๋ช…ํ™•ํ•œ ๋””๋ฒ„๊น…์ด ํ•„์š”ํ•  ๋•Œ
โ€ข
GCC: ๋ฆฌ๋ˆ…์Šค/์œ ๋‹‰์Šค ํ™˜๊ฒฝ, ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ฐœ๋ฐœ
โ€ข
TCC: ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ดํ•‘, ์Šคํฌ๋ฆฝํŒ… ์šฉ๋„

์„ค์น˜ ํŒŒ์ผ ์‹คํ–‰

mingw-get-setup.exe

์„ค์น˜ ์˜ต์…˜

MinGW Installation Manager

ํŒจํ‚ค์ง€ ์ฒดํฌ

mingw32-base mingw32-gcc-g++ msys-base
Plain Text
๋ณต์‚ฌ

์„ค์น˜

Installation โ†’ Apply Changes
Plain Text
๋ณต์‚ฌ

ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

Windows ํ™˜๊ฒฝ๋ณ€์ˆ˜ PATH์— ์ถ”๊ฐ€
C:\MinGW\bin
Plain Text
๋ณต์‚ฌ

๋ช…๋ น์–ด๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๊ธฐ

โ€ข
cmd
setx PATH "%PATH%;C:\MinGW\bin"
C
๋ณต์‚ฌ
โ€ข
PowerShell
[Environment]::SetEnvironmentVariable( "Path", $env:Path + ";C:\MinGW\bin", [EnvironmentVariableTarget]::User )
C
๋ณต์‚ฌ
$env:PATH += ";C:\MinGW\bin";
C
๋ณต์‚ฌ

์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๊ธฐ

โ€ข
์‹œ์ž‘ > ๋ณ€์ˆ˜ ๊ฒ€์ƒ‰ > ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํŽธ์ง‘
โ€ข
[ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ]
โ€ข
์‹œ์Šคํ…œ ๋ณ€์ˆ˜ > Path > [ ํŽธ์ง‘ ]
โ€ข
[ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ ]
โ€ข
C:\MinGW\bin ์ž…๋ ฅ
โ€ข
[ ํ™•์ธ ] > [ ํ™•์ธ ] > [ ํ™•์ธ ]

์„ค์น˜ ํ™•์ธ

ํ„ฐ๋ฏธ๋„ ์‹คํ–‰
gcc --version
Plain Text
๋ณต์‚ฌ
์˜ˆ์‹œ
gcc (MinGW.org GCC-6.3.0) 6.3.0
Plain Text
๋ณต์‚ฌ

VSCode ์„ค์น˜ & ํ™•์žฅ ์„ค์น˜

VSCODE ์„ค์น˜

VSCODE ํ™•์žฅ ์„ค์น˜

Visual Studio Code Extensions
C/C++ (Microsoft) C/C++ Compile Run
Plain Text
๋ณต์‚ฌ

ํ•œ๊ธ€ ๊นจ์ง ํ•ด๊ฒฐ

1.
ํŒŒ์ผ > ๊ธฐ๋ณธ ์„ค์ • > ์„ค์ •
2.
Encoding ๊ฒ€์ƒ‰
3.
Auto Guess Encoding
4.
Encoding : Korean(EUC-KR)

ํด๋” ์—ด๊ธฐ

1.
[ ํŒŒ์ผ ] > [ ํด๋” ์—ด๊ธฐ ]
2.
[ ์ƒˆ ํด๋” ] : workspace
3.
[ ํด๋” ์—ด๊ธฐ ]

์ƒˆ ํŒŒ์ผ

1.
์ƒˆ ํŒŒ์ผ
2.
ํŒŒ์ผ๋ช… ์ž…๋ ฅ : hello.c

์ฝ”๋”ฉ

#include <stdio.h> int main() { int num = 0; printf("Hello World~!\n"); printf("์•ˆ๋…• ์„ธ์ƒ์•„~!\n"); printf("์ž…๋ ฅ : "); scanf("%d", &num); printf("num : %d\n", num); return 0; }
C
๋ณต์‚ฌ

ํ•œ๊ธ€ ๊นจ์ง ์ฒดํฌ

์ฝ”๋“œ ์‹คํ–‰

F6