หากฉันใช้malloc
ในรหัสของฉัน:
int *x = malloc(sizeof(int));
ฉันได้รับคำเตือนจากgcc
:
new.c:7: warning: implicit declaration of function ‘malloc’
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
หากฉันใช้malloc
ในรหัสของฉัน:
int *x = malloc(sizeof(int));
ฉันได้รับคำเตือนจากgcc
:
new.c:7: warning: implicit declaration of function ‘malloc’
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
คำตอบ:
คุณต้องเพิ่ม:
#include <stdlib.h>
ไฟล์นี้มีการประกาศสำหรับฟังก์ชันในmalloc
ตัว หากคุณไม่ทำเช่นนั้นคอมไพเลอร์จะคิดว่าคุณต้องการกำหนดฟังก์ชันของคุณเองที่ชื่อmalloc
และจะเตือนคุณเนื่องจาก:
int
ซึ่งไม่เข้ากันได้กับบิวด์ - ในmalloc
ซึ่งใช้เวลา a size_t
และส่งกลับ a void*
)#include <stdlib.h>
คุณยังไม่ได้ทำ
คุณต้องรวมไฟล์ส่วนหัวที่ประกาศฟังก์ชันตัวอย่างเช่น:
#include <stdlib.h>
หากคุณไม่รวมไฟล์ส่วนหัวนี้คอมไพลเลอร์จะไม่รู้จักฟังก์ชันนี้ ดังนั้นจึงเห็นว่าไม่มีการประกาศ
สร้างนิสัยในการค้นหาหน้าที่ของคุณด้วยความช่วยเหลือ
วิธีใช้ส่วนใหญ่สำหรับ C ถูกสร้างแบบจำลองในหน้าคู่มือการใช้งานของยูนิกซ์
ใช้:
man malloc
ให้ผลลัพธ์ที่มีประโยชน์มาก
Googling man malloc
จะแสดงให้คุณเห็นว่าฉันหมายถึงอะไร
ใน unix คุณจะได้รับ apropos สำหรับสิ่งที่เกี่ยวข้อง
#include <stdlib.h>
ในเรื่องย่อหมายความว่าคุณต้องเขียนสิ่งนั้นในโปรแกรมของคุณ
นอกจากคำตอบที่ดีอื่น ๆ แล้วฉันต้องการทำ nitpick เล็กน้อยและครอบคลุมสิ่งที่ยังไม่ได้กล่าวถึงในคำตอบอื่น ๆ
เมื่อคุณอยู่ที่ Linux หากต้องการใช้malloc()
ในโค้ดของคุณ
คุณไม่จริงต้อง #include <stdlib.h>
(แม้ว่าการใช้งานstdlib.h
จะเป็นเรื่องธรรมดามากและอาจเป็นไปได้ว่าทุกโปรแกรมที่ไม่ใช่ของเล่นควรรวมไว้ด้วยวิธีใดวิธีหนึ่งเนื่องจากมีฟังก์ชันไลบรารีมาตรฐาน C และมาโครที่มีประโยชน์มากมาย)
คุณสามารถ#include <malloc.h>
แทนได้
แต่โปรดทราบว่าการใช้งานmalloc.h
นั้นเลิกใช้แล้วและทำให้โค้ดของคุณไม่สามารถพกพาได้ หากคุณต้องการที่จะใช้malloc()
คุณควรเสมอและตลอดไป #include <stdlib.h>
(ยกเว้นเหตุผลอย่างชัดเจนที่จะทำอย่างอื่น)
เหตุผลที่ว่าทำไมมีการอธิบายที่ดีที่สุดในคำตอบของคำถามนี้: