0Pricing
Zig Academy · บทเรียน

การเรียกฟังก์ชัน C และการเชื่อมโยง

เชื่อมต่อกับ libc และไลบรารีภายนอก

การเรียกฟังก์ชัน C และการเชื่อมโยง เป็นบทเรียน Zig Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Zig Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน

การนำเข้าไม่ใช่การเชื่อมโยง

@cImport มอบการประกาศให้คุณ แต่รหัสเครื่องจริงยังอยู่ในไลบรารี C ที่คุณต้องเชื่อมโยงด้วย

เชื่อมโยงกับ libc

การเรียกใช้ C ส่วนใหญ่ต้องใช้ไลบรารีมาตรฐานของ C บอกระบบ build ให้เชื่อมโยง libc เพื่อให้ฟังก์ชันอย่าง printf ถูกแก้การอ้างอิงขณะเชื่อมโยง

exe.linkLibC();

การเชื่อมโยงผ่าน CLI

หากต้องการเรียกใช้แบบรวดเร็ว ให้ส่งแฟล็กด้วยตนเอง -lc จะเชื่อมโยง libc เมื่อคอมไพล์ไฟล์เดียวโดยตรง

zig build-exe main.zig -lc

เรียกใช้เหมือนโค้ดเนทีฟ

เมื่อเชื่อมโยงแล้ว ฟังก์ชัน C จะถูกเรียกใช้เหมือนฟังก์ชัน Zig คุณเขียน c.printf(...) แล้ว Zig จะจัดการรูปแบบการเรียกใช้ให้

c.printf("%d\n", 42);

ให้ตรงกับลายเซ็น

คุณต้องส่งอาร์กิวเมนต์ที่ตรงกับลายเซ็นของ C ชนิดข้อมูลที่ไม่ถูกต้องจะทำให้เกิดข้อผิดพลาดขณะคอมไพล์ เพราะ Zig รู้ต้นแบบที่แปลแล้ว

เชื่อมโยงไลบรารีตามชื่อ

สำหรับไลบรารีอื่น ให้ระบุชื่อไลบรารี linkSystemLibrary จะบอกตัวเชื่อมโยงให้ดึงไลบรารีนั้นเข้ามา เช่น ไลบรารีคณิตศาสตร์

exe.linkSystemLibrary("m");

ค่าที่ส่งกลับมา

ค่าที่ฟังก์ชัน C ส่งกลับมาจะเป็นค่า Zig ปกติของชนิดข้อมูลที่แปลแล้ว พร้อมสำหรับจัดเก็บหรือตรวจสอบ

const n = c.abs(-5);

ข้อผิดพลาดใช้แบบแผนของ C

C ไม่มียูเนียนข้อผิดพลาด ดังนั้นความล้มเหลวจะแสดงเป็นรหัสส่งกลับหรือค่า errno ที่กำหนดไว้ คุณต้องตรวจสอบด้วยวิธีของ C เอง

ไม่มีการแปลงแฝง

Zig จะไม่แปลงข้อมูลของคุณอย่างเงียบ ๆ สิ่งที่คุณส่งคือสิ่งที่ C ได้รับ ทำให้การเรียกใช้มีต้นทุนต่ำและคาดเดาได้

การเชื่อมโยงในไฟล์ build

ใน build.zig ให้ผูกการเชื่อมโยงเข้ากับอาร์ทิแฟกต์ ขั้นตอน exe เดียวกับที่คอมไพล์โค้ดจะบันทึกไลบรารีของโค้ดนั้นไว้ด้วย

exe.linkLibC();
exe.linkSystemLibrary("z");

สองขั้นตอนสู่ความสำเร็จ

การเรียกใช้ C ต้องมีทั้งการนำเข้าและการเชื่อมโยงเสมอ นั่นคือ นำการประกาศเข้ามาแล้วตรวจสอบว่าสัญลักษณ์จริงพร้อมให้ตัวเชื่อมโยงใช้งาน

ตรวจสอบอย่างรวดเร็ว

ลองคิดว่าอะไรทำให้การเรียกใช้ฟังก์ชัน C ถูกแก้การอ้างอิงได้จริง

สรุปทบทวน

คุณได้เรียนรู้ว่าการเรียกใช้ C ต้องมีทั้งการนำเข้าและการเชื่อมโยง หลังจากนั้นจึงเรียกใช้ฟังก์ชัน C ได้เหมือนฟังก์ชัน Zig เนทีฟ 🎯

คำถามที่พบบ่อย

บทเรียน “การเรียกฟังก์ชัน C และการเชื่อมโยง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเรียกฟังก์ชัน C และการเชื่อมโยง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Zig Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเรียกฟังก์ชัน C และการเชื่อมโยง”

เชื่อมต่อกับ libc และไลบรารีภายนอก คุณปฏิบัติ Zig Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Zig Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Zig Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การเรียกฟังก์ชัน C และการเชื่อมโยง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Zig Academy นี้ได้ไหม

ได้ บทเรียน Zig Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. นำเข้าส่วนหัว C ด้วย @cImport
  2. การเรียกฟังก์ชัน C และการเชื่อมโยง
  3. พอยน์เตอร์ สตริง และชนิดข้อมูลของ C
  4. zig translate-c เพื่ออ่าน C ในรูปแบบ Zig
← กลับไปที่ Zig Academy