การเรียกฟังก์ชัน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- นำเข้าส่วนหัว C ด้วย @cImport
- การเรียกฟังก์ชัน C และการเชื่อมโยง
- พอยน์เตอร์ สตริง และชนิดข้อมูลของ C
- zig translate-c เพื่ออ่าน C ในรูปแบบ Zig