일반적으로 C/C++ 언어에서는 정수, 문자, 문자열 처리 등의 내장 함수를 사용하기 위해 헤더 파일을 포함시킵니다. 대표적인 출력 함수인 printf() 역시 내장 함수로, stdio.h 헤더 파일에 선언되어 있으며 콘솔에 다양한 형태의 데이터를 출력할 때 사용됩니다.
그런데 흥미롭게도 헤더 파일을 포함하지 않고도 printf() 함수를 직접 선언하면 정상적으로 출력할 수 있습니다. 아래는 C 언어에서 헤더 파일 없이 문자열을 출력하는 예제입니다.
예제 코드
int printf(const char *text, ...);
int main() {
printf("Hello World");
return 0;
}실행 결과
Hello World
코드 설명
위 프로그램에서는 #include 지시문으로 어떠한 헤더 파일도 포함하지 않았음에도 불구하고 "Hello World"가 정상적으로 출력되었습니다. 그 비결은 프로그램 상단에서 printf() 함수를 직접 선언했기 때문입니다.
헤더 파일이 하는 역할은 컴파일러에게 함수의 원형(prototype)을 알려주는 것입니다. 즉, stdio.h를 포함하지 않아도 함수의 원형만 직접 작성해 주면 컴파일러는 해당 함수의 존재와 시그니처를 인식할 수 있습니다.
선언된 printf() 함수의 원형은 다음과 같습니다.
int printf(const char *text, ...);
여기서 const char *text는 출력할 문자열을 받는 매개변수이고, ...는 가변 인자(variable arguments)를 의미합니다. 이처럼 함수 원형만 올바르게 선언해 주면 헤더 파일 없이도 표준 라이브러리 함수를 호출할 수 있습니다.
다만 이 방법은 학습 목적이나 특수한 환경에서 유용할 뿐, 실제 프로젝트에서는 표준 헤더 파일을 사용하는 것이 안전하고 권장되는 방식입니다.