기본 콘텐츠로 건너뛰기

방송대 C프로그래밍 1강: 소스 코드의 구성과 실행 파일 생성

0-썸네일-요약노트-C프로그래밍-1강

방송대 C프로그래밍 1강: 소스 코드의 구성과 실행 파일 생성

C 코드가 화면에 보인다고 곧바로 실행할 수 있는 것은 아닙니다. 문법에 맞는 토큰으로 소스 파일을 작성하고, 컴파일러가 목적 파일로 바꾸고, 링커가 필요한 라이브러리와 결합해야 실행 파일이 됩니다. 이 흐름을 이해하면 C 언어의 특징, 프로그램의 기본 구조, 명칭 규칙, 에러와 경고를 서로 떨어진 암기 항목이 아니라 하나의 개발 과정으로 설명할 수 있습니다.

한 줄의 코드는 작성·변환·실행이라는 경계를 차례로 지난다

프로그래밍은 컴퓨터가 작업을 수행하기 위해 실행할 명령의 순서를 작성하는 일입니다. 프로그래밍 언어는 이 명령을 사람이 표현하기 위한 언어입니다. C로 작성한 문장은 사람이 이해할 수 있는 소스 코드이므로, 하드웨어가 직접 실행할 형태로 변환하는 과정이 필요합니다.

경계대표 입력주요 처리대표 결과
작성요구사항과 프로그램 설계C 문법에 맞춰 코딩소스 파일
컴파일소스 파일문법 검사와 기계가 처리할 코드로 변환목적 파일
링크목적 파일들과 라이브러리함수와 외부 참조를 연결실행 파일
실행실행 파일과 필요한 데이터명령 수행프로그램 결과

판단 핵심: 소스 파일은 작성 결과, 목적 파일은 개별 소스의 컴파일 결과, 실행 파일은 목적 파일과 라이브러리를 링크한 결과입니다. 세 파일을 같은 것으로 보지 않아야 빌드 오류의 단계를 찾을 수 있습니다.

C는 고급언어의 표현력과 하드웨어 제어 능력을 함께 겨냥했다

프로그래밍 언어는 하드웨어에 가까운 기계어와 어셈블리어에서 사람이 논리 구조를 표현하기 쉬운 고급언어로 발전했습니다. 기계어는 하드웨어가 직접 처리하고, 어셈블리어는 어셈블러를 거치며, C와 같은 고급언어는 컴파일러를 통해 실행 가능한 코드로 바뀝니다.

C 언어는 1972년 Bell 연구소의 Ritchie가 시스템 프로그래밍을 목적으로 개발했습니다. 어셈블리어로 구현된 Unix 커널을 C로 다시 작성하면서 다양한 컴퓨터로 운영체제를 옮기기 쉬워졌습니다. 강의자료의 발전 흐름은 ALGOL 60에서 CPL·BCPL·B 언어를 거쳐 C로 이어지고, 이후 K&R C, ANSI C(C89), ISO C(C90), C99, C11, C17, C23으로 정리됩니다.

C의 성격의미개발에서 드러나는 효과
범용 고급언어데이터 표현과 흐름 제어로 논리적인 처리 구조를 작성여러 분야의 프로그램을 만들 수 있음
표준 라이브러리 제공자주 필요한 처리를 함수로 사용기능을 모두 처음부터 만들지 않아도 됨
높은 이식성특정 기계의 명령에만 묶이지 않음같은 소스를 다른 환경에 맞게 다시 빌드하기 쉬움
저급언어 수준의 특성하드웨어와 가까운 제어가 가능시스템 프로그래밍에 적합
간결한 문법과 빠른 실행핵심 문법 구조가 간결하고 컴파일된 코드가 실행됨효율적인 프로그램 작성에 유리

오개념 교정: C가 하드웨어를 제어할 수 있다고 해서 기계어나 어셈블리어로 분류되는 것은 아닙니다. C는 고급언어이면서 저급언어에 가까운 제어 특성도 제공하는 언어입니다.

프로그램 개발은 실행 파일을 만든 뒤에도 끝나지 않는다

프로그램 개발은 ‘코드를 입력하고 실행 버튼을 누르는 일’보다 넓습니다. 강의의 개발 단계는 다음과 같이 이어집니다.

  1. 프로그램의 목적 정의: 요구를 분석하고 시스템과 필요한 기능을 정합니다.
  2. 프로그램 설계: 분석한 기능을 처리할 프로그램 구조를 계획합니다.
  3. 소스 코드 작성: 설계를 C 언어의 문법에 맞는 코드로 표현합니다.
  4. 컴파일과 링크: 문법을 검사하고 목적 코드와 실행 파일을 만듭니다.
  5. 프로그램 실행: 필요한 데이터를 주어 프로그램을 동작시킵니다.
  6. 테스트와 디버깅: 예상 결과와 실제 결과를 비교하고 오류의 원인을 찾아 고칩니다.
  7. 유지 보수: 사용 중 발견된 오류와 변경 요구를 반영합니다.

빌드에 성공했다는 것은 변환 가능한 실행 파일이 만들어졌다는 뜻이지, 요구 기능을 정확히 수행한다는 보장은 아닙니다. 문법상 올바른 코드도 잘못된 계산을 할 수 있으므로 실행 뒤 테스트와 디버깅이 필요합니다.

편집기·컴파일러·링커·디버거는 서로 다른 실패를 다룬다

C 프로그램 개발에 필요한 도구는 역할이 다릅니다. 소스 코드 편집기는 코드 입력과 수정을 돕고, 컴파일러는 소스의 문법을 확인해 목적 코드로 바꿉니다. 링커는 여러 목적 파일과 라이브러리를 결합하며, 디버깅 도구는 실행 과정에서 오류의 위치와 상태를 추적합니다.

통합개발환경(IDE)은 이 도구들을 한 작업 환경에 모은 것입니다. 강의자료는 Dev-C++에서 소스 파일을 만들고 작성·저장·빌드·실행하는 예와, Visual Studio에서 프로젝트와 솔루션을 만들고 소스 파일을 추가한 뒤 빌드·실행하는 예를 보여 줍니다. 화면과 메뉴는 달라도 핵심 흐름은 같습니다.

  1. 새 소스 파일 또는 프로젝트를 준비합니다.
  2. C 소스 코드를 작성하고 확장자에 맞게 저장합니다.
  3. 빌드 명령으로 컴파일과 링크를 수행합니다.
  4. 오류가 없다면 실행 파일을 실행하고 출력을 확인합니다.
  5. 문제가 있으면 메시지와 실행 상태를 이용해 수정합니다.

컴파일은 번역하고 링크는 떨어진 조각을 하나로 묶는다

여러 파일로 구성된 프로그램을 가정하면 컴파일과 링크의 차이가 선명해집니다. Sample.c와 Sub.c는 각각 컴파일되어 Sample.obj와 Sub.obj 같은 목적 파일이 됩니다. 링커는 이 목적 파일들과 라이브러리를 결합해 SampleApp.exe 같은 실행 파일을 만듭니다. 헤더 파일은 함수 선언이나 매크로 정의처럼 소스들이 함께 알아야 할 내용을 제공합니다.

Sample.c ──컴파일──> Sample.obj ┐
                                  ├─링크─> SampleApp.exe
Sub.c    ──컴파일──> Sub.obj    ┤
라이브러리 ───────────────────────┘

한 소스의 문법이 틀리면 목적 파일을 만들지 못해 컴파일 단계에서 멈춥니다. 문법상 번역은 되었지만 호출한 함수의 실제 정의를 찾지 못하면 링크 단계에서 실행 파일 생성이 실패할 수 있습니다.

도입부·main 함수·사용자 함수가 한 프로그램의 뼈대를 이룬다

C 프로그램은 하나 이상의 함수를 포함하고 실행의 출발점이 되는 main() 함수가 있어야 합니다. 함수의 몸체는 중괄호로 묶인 블록이며, 블록 안에 변수 선언문과 치환·연산·함수 호출 같은 명령문을 둡니다. 선행처리 지시어를 제외한 C 문장은 세미콜론으로 끝냅니다.

다음 코드는 강의의 덧셈 구조를 학습용으로 단순화한 예입니다.

#include <stdio.h>

int add(int x, int y);

int main(void)
{
    int first = 12;
    int second = 8;
    int result = add(first, second);

    printf("%d\n", result);
    return 0;
}

int add(int x, int y)
{
    return x + y;
}

도입부의 #include는 표준 입출력 관련 선언을 사용할 수 있게 하고, add의 함수 선언은 호출 전에 함수의 형태를 알립니다. main은 12와 8을 준비해 add를 호출하고 결과 20을 출력합니다. 마지막의 함수 정의가 실제 덧셈을 수행합니다.

코드는 토큰을 문법과 의미에 맞게 배열한 문장이다

토큰은 C 프로그램을 이루는 기본 단위입니다. 예약어, 명칭, 상수, 문자열, 구두점, 설명문을 단순히 나열해서는 프로그램이 되지 않습니다. 각 토큰이 문법에 맞는 위치에서 올바른 의미를 가져야 합니다.

토큰 종류역할예
예약어C에서 문법과 의미가 이미 정해진 단어int, return, if
명칭변수·함수 같은 요소를 식별하기 위해 정한 이름result, add
상수코드에 직접 표현된 변하지 않는 값123, 'a'
문자열큰따옴표로 묶은 문자 시퀀스"KNOU"
구두점연산자와 구분자처럼 문법·의미가 정해진 기호=, +, ;, 괄호
설명문사람을 위한 프로그램 설명/* ... */, // ...

한 문장을 토큰으로 분해하는 연습

int total = 12 + 8;

int는 예약어, total은 명칭, =과 +는 연산자, 12와 8은 수치 상수, ;는 문장의 끝을 나타내는 구분자입니다. 같은 철자나 기호도 역할을 확인해야 하며, 공백만 보고 토큰의 종류를 결정해서는 안 됩니다.

명칭은 첫 문자·사용 문자·예약어 여부를 차례로 검사한다

명칭은 변수와 함수를 구별하기 위해 프로그래머가 정의하는 이름입니다. 영문 대문자와 소문자를 구분하므로 myname, myName, MyName은 서로 다른 명칭입니다.

  1. 첫 문자 확인: 영문자 또는 밑줄로 시작해야 합니다. 따라서 4days는 사용할 수 없습니다.
  2. 나머지 문자 확인: 영문자·숫자·밑줄을 조합할 수 있습니다. 공백이나 #, 하이픈 같은 특수문자는 허용되지 않습니다.
  3. 예약어 확인: auto처럼 C가 이미 정한 단어는 명칭으로 사용할 수 없습니다.
  4. 대소문자 확인: For는 소문자 예약어 for와 다른 명칭으로 구분됩니다.
후보판정결정 근거
score2사용 가능영문자로 시작하고 이후 숫자 사용
_count사용 가능밑줄로 시작
my name사용 불가문자 사이에 공백 포함
my-name사용 불가허용되지 않는 하이픈 포함
return사용 불가제어 관련 예약어

상수·문자열·연산자는 값과 동작을 서로 다른 방식으로 표현한다

123은 수치 상수, 'a'는 문자 상수, "KNOU"는 문자열 상수입니다. 작은따옴표와 큰따옴표는 같은 장식이 아닙니다. 하나의 문자를 나타내는 표현과 문자 시퀀스를 나타내는 표현을 구분합니다.

연산자는 산술·관계·논리·비트·대입 연산처럼 데이터에 수행할 동작을 표현하며, 연산의 대상은 피연산자라고 합니다. 연산 종류에 따라 피연산자가 1개에서 3개까지 사용될 수 있습니다. 다음 문장에서 +의 피연산자는 12와 8이고, 계산 결과는 대입 연산자 =를 통해 total에 저장됩니다.

int total = 12 + 8;

오개념 교정: 변수에 저장된 값과 소스 코드에 직접 적은 상수를 혼동하지 마세요. total은 값을 담을 이름인 명칭이고, 12와 8은 코드에 직접 적힌 상수입니다.

설명문은 컴파일에서 무시되지만 읽기와 수정의 단서가 된다

설명문 또는 주석문은 프로그램의 목적과 코드의 의도를 사람에게 전달하는 문장입니다. 컴파일러는 설명문 영역을 실행 명령으로 번역하지 않습니다. /*와 */ 사이의 내용은 여러 줄에 걸친 설명에 알맞고, // 뒤의 내용은 그 행의 끝까지 설명문이 됩니다.

/* 두 값을 더해 결과를 출력하는 학습용 예시 */
int x = 12;
int y = 8;
int sum = x + y;  // 덧셈 결과 저장

주석이 많다고 코드가 정확해지는 것은 아닙니다. 코드와 다른 설명은 오히려 잘못된 판단을 유도합니다. ‘무엇을 하는지’가 코드만으로 분명한 부분을 반복하기보다 입력의 의미, 선택한 방법의 이유, 주의할 조건처럼 유지 보수에 필요한 정보를 적는 편이 좋습니다.

에러와 경고는 빌드 가능 여부와 위험 신호라는 기준으로 구분한다

에러는 문법에 맞지 않는 문장이나 필수 요소 누락 등으로 정상적인 빌드를 완료할 수 없는 문제입니다. 에러가 발생하면 빌드가 중지되어 목적 코드 또는 실행 파일이 생성되지 않으므로 메시지를 확인해 수정해야 합니다.

경고는 빌드를 계속할 수 있지만 문제를 일으킬 가능성이 있는 코드에 대한 신호입니다. 사용하지 않는 변수·함수나 오차 가능성이 있는 문장이 예입니다. 경고가 있어도 실행 파일이 만들어질 수 있지만, 내용을 파악한 뒤 필요한 경우 수정하고 문제가 없다고 판단한 경우에만 처리해야 합니다.

진단빌드에 미치는 영향개발자의 대응
에러정상 빌드가 중지되고 실행 파일을 만들 수 없음원인을 찾아 반드시 수정
경고빌드와 실행이 가능할 수 있음위험 가능성을 검토하고 필요하면 수정

판단 핵심: ‘실행 파일이 생겼다’는 이유로 경고를 안전하다고 단정하지 말고, ‘경고가 있다’는 이유만으로 문법 에러와 같다고 보지도 않습니다. 메시지가 가리키는 단계와 실제 위험을 함께 확인합니다.

메시지를 읽으면 세미콜론 누락과 함수 연결 실패를 분리할 수 있다

세미콜론이 빠진 경우

다음 코드는 printf 호출 뒤에 세미콜론이 없습니다.

#include <stdio.h>

int main(void)
{
    printf("Hello\n")
}

컴파일러는 닫는 중괄호 앞에서 세미콜론이 없다는 구문 오류를 보고할 수 있습니다. 메시지의 위치가 닫는 중괄호를 가리키더라도 실제 원인은 그 직전 문장의 끝일 수 있습니다. 오류 지점만 보지 말고 바로 앞 토큰까지 확인해야 합니다.

함수 이름을 잘못 쓴 경우

printf 대신 print를 호출하면 도구에 따라 정의되지 않은 함수라는 경고가 먼저 나오고, 이어 링커가 실제 함수 정의를 찾지 못해 외부 기호 오류로 실패할 수 있습니다. 이 사례는 하나의 오타가 컴파일 진단과 링크 실패로 이어질 수 있음을 보여 줍니다.

#include <stdio.h>

int main(void)
{
    print("Hello\n");
}

수정할 때는 함수 이름을 printf로 고치고, 선언을 제공하는 헤더와 실제 연결되는 라이브러리까지 확인합니다. 단순히 첫 경고만 숨기면 링커가 찾지 못하는 함수 정의 문제는 남습니다.

처음 보는 빌드 문제는 파일·단계·토큰·의미 순서로 좁힌다

  1. 파일 확인: 수정한 소스가 저장되었고 현재 프로젝트에 포함되었는지 봅니다.
  2. 단계 확인: 메시지가 컴파일, 링크, 실행 중 어느 단계에서 나왔는지 구분합니다.
  3. 토큰 확인: 예약어·명칭·상수·연산자·구분자가 문법에 맞게 배열되었는지 봅니다.
  4. 이름 확인: 명칭 규칙, 대소문자, 함수 선언과 철자가 일치하는지 확인합니다.
  5. 의미 확인: 빌드가 성공했다면 입력과 실제 출력이 설계한 기능과 맞는지 테스트합니다.
  6. 수정 후 재검증: 다시 빌드하고 경고까지 읽은 뒤 실행 결과를 확인합니다.

이 순서는 IDE의 종류와 관계없이 사용할 수 있습니다. 메뉴 위치를 외우는 대신 소스 파일이 어떤 도구를 거쳐 어떤 결과 파일이 되는지를 기준으로 문제를 추적하면 다른 개발 환경에서도 같은 원리로 대응할 수 있습니다.

핵심 개념 정리

  • C는 범용 고급언어이면서 하드웨어와 가까운 제어 특성을 제공해 시스템 프로그래밍에 적합하다.
  • 개발은 목적 정의·설계·코딩·컴파일과 링크·실행·테스트와 디버깅·유지 보수로 이어진다.
  • 컴파일러는 소스 파일을 목적 파일로 바꾸고, 링커는 목적 파일과 라이브러리를 결합해 실행 파일을 만든다.
  • C 프로그램은 하나 이상의 함수와 main 함수를 포함하고, 블록은 중괄호로 구성되며 일반 문장은 세미콜론으로 끝난다.
  • 예약어·명칭·상수·문자열·구두점·설명문은 프로그램을 구성하는 토큰이며 문법과 의미에 맞게 배열해야 한다.
  • 에러는 정상 빌드를 막지만 경고는 빌드를 허용할 수 있으므로, 둘 모두 메시지의 단계와 원인을 확인해 대응한다.

C 프로그램을 읽을 때는 먼저 ‘이 파일이 어느 단계의 결과인가’를 찾고, 소스 코드라면 함수의 뼈대와 토큰의 역할을 나누어 보세요. 빌드 메시지가 나오면 컴파일과 링크를 구분하고, 실행되었다면 설계한 결과와 비교합니다. 이 흐름을 잡으면 이후 배우는 자료형과 선행처리기도 코드 한 줄의 암기가 아니라 변환 과정 속 역할로 연결할 수 있습니다.

예상문제 10선

1. 프로그래밍의 의미를 가장 정확하게 설명한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②

  • ① 오답: 목적 파일과 라이브러리의 결합은 전체 프로그래밍 과정 중 링크 단계입니다.
  • ② 정답: 컴퓨터가 수행할 작업을 명령의 순서로 표현한다는 핵심을 담고 있습니다.
  • ③ 오답: 메시지 수정은 디버깅의 일부일 뿐 프로그램을 작성하는 전체 활동과 같지 않습니다.
  • ④ 오답: IDE는 작업 도구이며 프로그래밍의 의미를 특정 도구 사용으로 한정할 수 없습니다.

2. 기계어·어셈블리어·C 언어와 변환 도구의 관계를 올바르게 설명한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④

  • ① 오답: 기계어는 하드웨어가 직접 처리하는 명령 형태입니다.
  • ② 오답: 어셈블리어는 제2세대 언어이며 어셈블러로 변환합니다.
  • ③ 오답: C 소스는 사람이 작성하는 고급언어 표현이므로 컴파일과 링크가 필요합니다.
  • ④ 정답: 각 언어 수준과 그에 대응하는 변환 도구를 정확히 연결했습니다.

3. C 언어의 성격에 대한 설명으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④

  • ① 오답: C는 기계어가 아니라 제3세대 고급언어에 해당합니다.
  • ② 오답: C는 하드웨어 수준의 제어에 유리한 특성을 제공합니다.
  • ③ 오답: 유용한 처리를 위한 표준 라이브러리를 제공합니다.
  • ④ 정답: 고급언어의 구조와 하드웨어에 가까운 제어 능력을 함께 갖는다는 특징입니다.

4. 강의에서 제시한 프로그램 개발 단계의 흐름으로 가장 적절한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①

  • ① 정답: 해결할 목적을 정하고 구조와 코드를 만든 뒤 변환·실행·검증·운영 변경으로 이어집니다.
  • ② 오답: 목적과 설계가 확정되기 전에 유지 보수를 시작할 수 없습니다.
  • ③ 오답: 소스는 설계 뒤에 작성하며 실행 전에 컴파일과 링크가 필요합니다.
  • ④ 오답: 컴파일은 작성된 소스가 있어야 가능하므로 출발 단계가 될 수 없습니다.

5. 개발 도구와 역할의 연결로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③

  • ① 오답: 코드 입력과 수정은 편집기의 역할이며 파일과 라이브러리 연결은 링커가 수행합니다.
  • ② 오답: 소스를 목적 파일로 번역하는 것은 컴파일러의 역할입니다.
  • ③ 정답: 디버깅 도구는 실행 상태를 살펴 오류의 위치와 원인을 찾도록 돕습니다.
  • ④ 오답: 컴파일러는 소스를 검사하고 목적 코드로 변환하며, 입력과 저장은 편집기가 담당합니다.

6. 여러 C 소스 파일을 하나의 실행 파일로 만드는 흐름으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①

  • ① 정답: 컴파일은 소스별 목적 파일을 만들고 링크는 이 조각과 라이브러리를 결합합니다.
  • ② 오답: 실행 파일은 컴파일과 링크가 끝난 뒤 만들어지는 결과입니다.
  • ③ 오답: 헤더는 선언과 정의 정보를 제공하지만 그 자체를 실행해 전체 결과 파일을 만들지는 않습니다.
  • ④ 오답: 디버거는 실행을 추적하는 도구이고 실행 파일 생성은 컴파일러와 링커의 작업입니다.

7. 다음 중 C의 명칭으로 사용할 수 있는 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②

  • ① 오답: 숫자는 명칭의 첫 문자로 사용할 수 없습니다.
  • ② 정답: 영문자로 시작하고 이후 영문자·숫자·밑줄만 사용했습니다.
  • ③ 오답: 하이픈은 명칭에 허용되는 문자가 아닙니다.
  • ④ 오답: return은 C에서 의미가 정해진 예약어입니다.

8. 본문의 학습용 덧셈 프로그램에서 first가 12, second가 8일 때 add 함수가 반환하고 printf가 출력하는 값은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③

  • ① 오답: 두 값을 뺀 결과이며 add 함수의 x + y와 다릅니다.
  • ② 오답: 첫 번째 인수만 선택한 값으로 두 피연산자의 덧셈을 수행하지 않았습니다.
  • ③ 정답: 12와 8이 각각 x와 y에 전달되고 return x + y;에 따라 20이 반환됩니다.
  • ④ 오답: 숫자를 문자열처럼 이어 붙인 결과이며 예제는 정수 덧셈을 수행합니다.

9. 에러와 경고에 대한 판단으로 가장 적절한 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①

  • ① 정답: 빌드를 막는 에러와 잠재 문제를 알리는 경고의 차이를 반영하면서 둘 다 원인을 확인합니다.
  • ② 오답: 경고가 있어도 빌드와 실행 파일 생성이 가능할 수 있습니다.
  • ③ 오답: 실행 가능하다는 사실은 오차나 미사용 요소 같은 잠재 위험이 없다는 뜻이 아닙니다.
  • ④ 오답: 에러와 경고는 실행 전 빌드 과정에서도 문법 누락이나 잠재 문제를 보고합니다.

10. print("Hello\n"); 때문에 정의되지 않은 함수 경고와 외부 기호 링크 오류가 이어졌을 때 가장 적절한 해결 순서는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③

  • ① 오답: 실행 파일 이름은 소스에 잘못 적힌 함수 호출과 외부 참조를 해결하지 못합니다.
  • ② 오답: 경고를 숨겨도 실제 함수 정의를 찾지 못하는 링크 오류는 그대로 남습니다.
  • ③ 정답: 철자와 선언을 확인해 존재하는 printf 호출로 고치고 전체 빌드 과정을 다시 검증해야 합니다.
  • ④ 오답: C 프로그램의 실행 출발점인 main을 제거하면 정상적인 해결이 아니라 다른 빌드 문제를 만듭니다.

참고 자료와 작성 기준

이 글은 해당 차시 강의자료를 바탕으로 학습 목적에 맞게 재구성한 비공식 학습자료입니다. 변환 흐름, 토큰 분해, 명칭 판별과 빌드 오류 추적 예시는 학습자의 이해를 돕도록 구성하고 검토했습니다.

  • 작성·편집: 올에이클래스 학습연구팀
  • 주요 근거: 한국방송통신대학교 C프로그래밍 1강 「C 언어의 개요」 강의자료, 2025
  • 편집 원칙: 올에이클래스 편집 정책
  • 최종 내용 검토: 2026-09-06

댓글