ปกติเราใช้ Header Files (stdio.h, iostream) เพื่อเข้าถึง Built-in Functions เช่น printf() แต่จริงๆ แล้วสามารถเรียกใช้ได้โดย Forward Declaration เอง
วิธีการ: Forward Declaration
ประกาศ Prototype ของ printf() เองในโค้ด โดยไม่ Include Header
ตัวอย่างใน C
// Forward Declaration ของ printf
int printf(const char *format, ...);
int main() {
printf("Hello World");
return 0;
}
ผลลัพธ์
Hello World
คำอธิบาย
int printf(const char *format, ...);- บอก Compiler ว่าprintfเป็นฟังก์ชันที่รับ Format String และ Variable Arguments คืนค่า int- Linker จะหา Definition จริงใน C Standard Library (libc) ขณะ Linking
- ทำงานได้เพราะ
printfเป็นฟังก์ชันมาตรฐานที่ Linker รู้จัก
ข้อควรระวัง (Important Caveats)
| ปัญหา | คำอธิบาย |
|---|---|
| Type Safety | ไม่มี Compiler Type Checking สำหรับ Arguments (เพราะไม่มี Prototype เรียบร้อยจาก Header) |
| Undefined Behavior | ถ้า Declaration ผิด (Calling Convention, Parameter Types) → UB |
| Variadic Functions | ... ต้องมี Prototype ถูกต้อง มิฉะนั้น Default Argument Promotions อาจผิด |
| Portability | Calling Convention อาจต่างกันระหว่าง Platforms (x86, ARM, x64) |
| Standard Compliance | มาตรฐาน C กำหนดให้ Include Header ก่อนใช้ Library Functions |