int g_i = 0;
void Test(); // 함수 선언!
int main()
{
Test()
return 0;
}
void Test() // 세부 함수
{
++g_i;
}

단! 헤더에 직접 구현은 안됨 중복정의가 발생할 수 도 있음
// 함수 선언만 한 것 (반환은 없음) int Add(int a, int b);
#include "func.h" 을 통해 헤더파일 참조
#include "func.h"
int Add(int a, int b)
{
return a + b;
}

#include "func.h" 을 통해 헤더파일 참조
main에서 헤더 파일을 포함해 함수를 호출하면, 실행 시 전체 프로젝트에서 해당 함수의 실제 구현(소스파일)을 찾아 실행하며, 따라서 구현 함수는 반드시 프로젝트 내에 존재해야 한다.
다양한 함수를 구현할 수 있음



g++ -std=c++17 14분할구현.cpp -I"/Users/kimseorin/Desktop/C++/include" -o 14분할구현
/Users/kimseorin/Desktop/C++/
│
├─ 14분할구현.cpp
├─ func.h
폴더 안에 모든 폴더가 컴파일 되어야함 그러기 위해서는 아래처럼 변경해야한다.
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: clang++ 활성 파일 빌드",
"command": "/usr/bin/clang++",
"args": [
"-fcolor-diagnostics",
"-fansi-escape-codes",
"-g",
"${file}", // 활성파일 하나만 빌드
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "디버거에서 생성된 작업입니다."
},
{
"type": "cppbuild",
"label": "C/C++: 모든 파일 빌드",
"command": "/usr/bin/clang++",
"args": [
"-fcolor-diagnostics",
"-fansi-escape-codes",
"-g",
"${fileDirname}/*.cpp", // 현재 폴더의 모든 .cpp 파일 빌드
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": ["$gcc"],
"group": "build",
"detail": "현재 폴더의 모든 소스(.cpp) 파일을 빌드합니다."
}
],
"version": "2.0.0"
}
{
"configurations": [
{
"name": "C/C++: 단일 파일 디버그",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb",
"preLaunchTask": "C/C++: clang++ 활성 파일 빌드"
},
{
"name": "C/C++: 전체 프로젝트 디버그",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb",
"preLaunchTask": "C/C++: 모든 파일 빌드"
}
],
"version": "2.0.0"
}





에러
1. 컴파일에러 : 문법 오류, 타입 오류 등 코드 자체가 잘못되어 컴파일되지 않을 때 발생
2. LNK오류 : 컴파일은 성공했지만, 함수나 전역 변수 등 실제 정의가 없어 연결할 수 없을 때 발생
예: 헤더에는 선언만 있고 cpp에서 구현이 없는 경우
--
✅ 확인하기
Q1. main에서 Add를 호출하면 실행되는 흐름을 설명하시오.