์™œ C๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š”๊ฐ€?

C ํ‘œ์ค€

C89/ANSI-C

  • ์ตœ์ดˆ์˜ C ํ‘œ์ค€ (89๋…„)
  • ์—ฌ์ „ํžˆ ๋งŽ์€ ์ฝ”๋“œ๊ฐ€ ์ด ํ‘œ์ค€์„ ์‚ฌ์šฉ
  • ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ
  • ์ด๊ฑธ ๊ฐ€์žฅ ๋งŽ์ด ์‚ดํŽด๋ณผ ๊ฒƒ์ž„

C99

  • ๋งŽ์€ ๋‚ด์šฉ ์ถ”๊ฐ€
  • ์ธ๋ผ์ธ ํ•จ์ˆ˜
  • ์ƒˆ๋กœ์šด ํ—ค๋”ํŒŒ์ผ๋“ค
  • ์ƒˆ๋กœ์šด ์ž๋ฃŒํ˜•
  • ํ•œ ์ค„์งœ๋ฆฌ ์ฃผ์„
  • ์œ ์—ฐํ•œ ๋ฐฐ์—ด ๋ฉค๋ฒ„
  • ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฐฐ์—ด
  • ๋ณด๋‹ค ์•ˆ์ „ํ•œ I/O ํ•จ์ˆ˜

C11

  • C99 ๋Œ€์ฒด
  • ์œ ๋‹ˆ์ฝ”๋“œ ์ง€์›
  • ์ด๋ฆ„ ์—†๋Š” ๊ตฌ์กฐ์ฒด ๋ฐ ๊ณต์šฉ์ฒด
  • ์ œ๋„ค๋ฆญ ํ‘œํ˜„์‹
  • ํ‘œ์ค€ํ™”๋œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ์ง€์›

C18

  • ์‹ ๊ทœ ๊ธฐ๋Šฅ ์—†์Œ
  • C11์˜ ๊ฒฐํ•จ๋งŒ ์ˆ˜์ •

include?

  • ํ˜„๋Œ€์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” import์™€ ๊ฐ™์€ ๊ตฌ๋ฌธ
  • ๋‹ค๋ฅธ ํŒŒ์ผ์— ๊ตฌํ˜„๋œ ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ
  • ํ•˜์ง€๋งŒ ๋˜‘๋˜‘ํ•˜๊ฒŒ? ์ฐพ์•„์ฃผ์ง€๋Š” ์•Š์Œ
  • ์‚ฌ์‹ค #include๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ ์ง€์‹œ๋ฌธ์ค‘ ํ•˜๋‚˜์ž„
  • ์ด์ƒํ•œ ์• ์ž„.
  • stdio.h๋Š” ์‹ค์ œ ๋””์Šคํฌ ์ƒ์— ์กด์žฌํ•˜๋Š” ํŒŒ์ผ ์ด๋ฆ„์ž„
  • ํ•ด๋‹น ํŒŒ์ผ์„ โ€œํฌํ•จํ•ด์ค˜๋ผโ€ ๋ผ๋Š” ์˜๋ฏธ์ž„ (๋ณต์‚ฌํ•˜๊ณ include ๋ผ์ธ ์ง€์šฐ๊ณ  ๋ถ™์—ฌ๋„ฃ๊ธฐ)
    • ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜๋“ค๋„ ๊ฐ™์ด ํฌํ•จ๋จ

C_UnmanagedProgramming_01_CGrammar_0.png

์‚ฌ์šฉ๋ฒ•

#include<stdio.h> /* OK */
#include'stdio.h' /* X */
#include"stdio.h" /* OK ๊ทผ๋ฐ ์‚ฌ์šฉํ•˜์ง€ ๋ง ๊ฒƒ. ๋‚˜์ค‘์— ์–˜๊ธฐํ•ด์คŒ*/

stdio.h

  • Standard Input and Output
  • ํ‘œ์ค€ ์ž…์ถœ๋ ฅ, ์ŠคํŠธ๋ฆผ ์ž…์ถœ๋ ฅ
  • C ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ์ผ๋ถ€
    • ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ
    • ์ˆ˜ํ•™ ๊ณ„์‚ฐ
    • ์ž…์ถœ๋ ฅ ์ฒ˜๋ฆฌ
    • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

main(void)

  • ํ”„๋กœ๊ทธ๋žจ์˜ ์ง„์ž…์ 
  • C ์ฝ”๋“œ ๋นŒ๋“œํ•ด์„œ ๋‚˜์˜จ ์‹คํ–‰ํŒŒ์ผ (.exe, .out)์„ ์‹คํ–‰ํ•˜๋ฉด ์ž๋™์ ์œผ๋กœ ์‹คํ–‰๋จ
  • ๋ฐ˜๋“œ์‹œ int๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•จ
    • 0: ํ”„๋กœ๊ทธ๋žจ์— ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๋‹ค.
    • ๊ทธ ์™ธ: ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์ฝ”๋“œ ํ™•์ธํ•˜๊ธฐ
    • clang๊ณผ ๊ฐ™์€ ํ”„๋ก ํŠธ์—”๋“œ ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ์‹คํ–‰
    • .out ๊ฒฐ๊ณผ ๋‚˜์˜ด
    • shell: echo $?

์ด ๊ณผ๋ชฉ์—์„œ ์‚ฌ์šฉํ•  clang ๋ช…๋ น์–ด

clang -std=c89 -W -Wall -pedantic-errors main.c
  • clang: command line compiler์˜ ํ‘œ์ค€
  • c89: c89 ํ‘œ์ค€์œผ๋กœ ์ปดํŒŒ์ผํ•ด์ค˜
  • -W: ์›Œ๋‹ ๋‹ค ์ผœ์ฃผ์„ธ์š”
  • ๋นŒ๋“œ์‹œ ์‹คํ–‰ํŒŒ์ผ์€ ๋”ฐ๋กœ ์˜ต์…˜ ์•ˆ์ฃผ๋ฉด a.out์ž„
  • -o์™€ ๊ฐ™์€ ํ”Œ๋ž˜๊ทธ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ
  • ์ผ๋ถ€๋Ÿฌ IDE ์‚ฌ์šฉ์•ˆํ•จ
  • ์˜›๋‚  ์ฝ”๋“œ ๋ฒ ์ด์Šค๊ฐ€ ๋งŽ์ง€ ์•Š๋‹ค, ํŠน์ • ํ™˜๊ฒฝ์— ๋งž์ถฐ์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„์ด๋‹ค.
  • ๊ทธ๋ž˜์„œ ํˆด ์ง€์›์ด ์ข‹์ง€ ์•Š๋‹ค.
  • ์ด๋Ÿฐ ํ™˜๊ฒฝ์— ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•œ๋‹ค.
  • ์ด๋Ÿฐ ๊ฒƒ ๋ชปํ•˜๊ณ  C ๊ฐœ๋ฐœ์ž ํ•˜๋ ค๋ฉด ํž˜๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • ์ผ๋‹จ ๋‚˜๋Š” VSCode์— ์„ธํŒ…ํ•ด๋‘ 

๊ทธ๋Ÿผ ๋””๋ฒ„๊น… ์–ด๋–ป๊ฒŒ ํ•˜์ง€?

  • ํ•œ์ค„ ํ•œ์ค„ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ํ‚ค์›Œ์•ผ ํ•จ
  • ํ•˜๋“œ์›จ์–ด ํ•˜๊ณ  ๋ฐ€์ ‘ํ•จ
  • ๊ทธ๋ž˜์„œ ์ถ”์ƒ์ ์ธ๊ฒŒ ๋งŽ์ง€ ์•Š์Œ. ๊ทธ๋ž˜์„œ ๊ฐ€๋Šฅํ•จ

main(void): void

  • ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ void๋ฅผ ์ƒ๋žตํ•œ๋‹ค๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š”๊ฒŒ ์•„๋‹˜
    • int main()
  • c์—๋Š” ํ•จ์ˆ˜ ์„ ์–ธ๊ณผ ํ•จ์ˆ˜ ์ •์˜๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Œ
  • ํ•จ์ˆ˜ ์„ ์–ธ
    • ์—ฌ๊ธฐ์„œ void๋ฅผ ์ƒ๋žตํ•˜๋ฉด ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค๋Š” ์˜๋ฏธ
    • ๋‹ค๋งŒ ๋ฌด์—‡์„ ๋ฐ›์„์ง€ ๋ชจ๋ฆ„..
  • ํ•จ์ˆ˜ ์ •์˜
    • ์—ฌ๊ธฐ์„œ ์ƒ๋žตํ•˜๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋‹ค๋Š” ๋œป
  • ์ •๋ฆฌ: ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์œผ๋ฉด ๋ช…์‹œ์ ์œผ๋กœ void๋ผ๊ณ  ์จ์ฃผ์ž.
  • ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์–ธ์ œ๋‚˜ void๋ฅผ ์„ ์–ธํ•˜๋Š” ์Šต๊ด€์„ ๊ฐ€์ง€๊ณ  ์˜ˆ์™ธ์ ์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์„ ๊ฒฝ์šฐ void๋ฅผ ์ง€์šฐ๋ฉด ๋œ๋‹ค.

์„ ์–ธ ๋ถ€

int sum(void); // ๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์—†๋‹ค
int sum();      // ๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์žˆ์–ด ๊ทผ๋ฐ ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค

์ •์˜ ๋ถ€

int sum(void) // ๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์Œ
{
 
}
 
int sum(const int num1, const int num2) // ๋งค๊ฐœ๋ณ€์ˆ˜ 2๊ฐœ ์žˆ์Œ
{
 
}

Reference