ฉันเพิ่งเจอรหัส C ของใครบางคนที่ฉันสับสนว่าทำไมมันถึงรวบรวม มีสองประเด็นที่ฉันไม่เข้าใจ
ก่อนอื่นฟังก์ชั่นต้นแบบนั้นไม่มีพารามิเตอร์เทียบกับนิยามฟังก์ชันจริง ประการที่สองพารามิเตอร์ในการกำหนดฟังก์ชั่นไม่ได้มีประเภท
#include <stdio.h>
int func();
int func(param)
{
return param;
}
int main()
{
int bla = func(10);
printf("%d", bla);
}
ทำไมจึงใช้งานได้ ฉันได้ทดสอบมันในคอมไพเลอร์สองสามอันและมันใช้งานได้ดี
-Wstrict-prototypes
ทั้งint func()
และint main()
: xc: 3: คำเตือน: การประกาศฟังก์ชั่นไม่ใช่ต้นแบบ คุณควรประกาศmain()
เป็นmain(void)
เช่นกัน
int func();
int func(arglist) { ... }
int main(void)
ชัดขัดแย้งกับการเรียกร้องและรัฐของคุณว่ารุ่นไม่มีอาร์กิวเมนต์เป็น