Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

พิมพ์ "Hello World" ใน C/C++ โดยไม่ใช้ Header Files

ปกติเราใช้ 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

คำอธิบาย

  1. int printf(const char *format, ...); - บอก Compiler ว่า printf เป็นฟังก์ชันที่รับ Format String และ Variable Arguments คืนค่า int
  2. Linker จะหา Definition จริงใน C Standard Library (libc) ขณะ Linking
  3. ทำงานได้เพราะ 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 อาจผิด
PortabilityCalling Convention อาจต่างกันระหว่าง Platforms (x86, ARM, x64)
Standard Complianceมาตรฐาน C กำหนดให้ Include Header ก่อนใช้ Library Functions