เรื่องที่อยากเขียน ... เรื่องที่พยายามเขียน ...
Group Blog
 
All blogs
 
ระวังถูก compiler หลอก (1)

เคยเห็นกระทู้ถามปัญหาภาษา C ในพันทิปกระทู้นึง เจ้าของกระทู้เอา source code ที่สงสัยมาให้ดู
ผมเห็นว่า source code ที่ให้มา ไม่น่าจะ compile ผ่าน แต่คำถามที่เจ้าของกระทู้ถาม แสดงว่าได้ทดลอง compile มาแล้ว
code ที่ผมคิดว่าไม่น่าจะ compile ผ่านคือ
srand(unsigned(time(NULL)));
ตรง unsigned(time(NULL)) เข้าใจว่าเป็นการ cast ค่าที่ return มาจาก function time ให้เป็น unsigned
แต่ syntax การ cast ในภาษา C ต้องใส่วงเล็บด้วย ดังนั้นตรง unsigned ต้องเป็น (unsigned)
code ที่ถูก ต้องเป็นแบบนี้ครับ
srand((unsigned)(time(NULL)));

ด้วยความสงสัยก็เลยลองเอา code ที่ผิด ไป compile ด้วย gcc บน linux ผลลัพธ์เป็นไปตามที่คาด คือ compile ไม่ผ่านครับ
แต่นึกได้ว่ามี compiler อีกตัวชื่อ Dev-C ที่พึ่ง download มา เลยลองเอามา compile ดู คราวนี้ปรากฎว่า compile ผ่าน
ทำเอาผมงงไปเลยครับ ความคิดแรกที่แว่บเข้ามาคือผมต้องทำอะไรผิด หรือเข้าใจอะไรผิด แน่ๆ
ตอน download Dev-C จาก web site ก็เห็นว่าใช้ compiler ของ gnu ไม่น่าจะมีปัญหาเรื่อง standard
เลยหาดูว่า Dev-C ใช้ compiler ตัวไหน ไปเห็นว่าใช้ g++ อยู่
ซึ่ง g++ เป็น compiler สำหรับภาษา C++ ไม่ใช่ compiler สำหรับภาษา C
ผมลองแก้ให้ใช้ gcc เป็น compiler ผลปรากฏว่า compile ไม่ผ่าน

แสดงว่าถ้าเอา source code ภาษา C ไป compile ด้วย compiler สำหรับภาษา C++
อาจได้ผลลัพธ์ผิดๆ เพราะถูก compiler หลอกเอาได้

ยังมีตัวอย่างที่ถูก compiler หลอกอีกหลายตัวอย่าง เอาไว้มีเวลาจะมาเล่าให้ฟังอีกครับ






Create Date : 13 สิงหาคม 2551
Last Update : 13 สิงหาคม 2551 21:05:31 น. 3 comments
Counter : 522 Pageviews.

 

ม่ายรู้เิรื่องเลย ค่ะ

เพิ่งรู้ตัวว่าั Yahoo360, มานเอางานของเราเก่าๆที่เขียนหายเหลือแค่ไม่กี่เหน้า

Photobucket


โดย: Cheria (SwantiJareeCheri ) วันที่: 13 สิงหาคม 2551 เวลา:22:22:04 น.  

 
ผมเคยเหมือนกัน อาการคล้าย ๆ แบบนี้ แต่ของผมดันเอาส่วนที่ comment ไป compile ซะงั้น C18 ของ Microchip แก้ไปครึ่งวันกว่าจะหาสาเหตุได้


โดย: AIam วันที่: 14 สิงหาคม 2551 เวลา:0:59:08 น.  

 
ของคุณ AIam อาจเป็นที่ nested comment คือมี comment อยู่ใน comment อีกที
ใน standard ภาษา C จะไม่ยอมให้มี nested comment ครับ
แต่ compiler บางตัวอาจยอมให้มีได้


โดย: zkaru วันที่: 14 สิงหาคม 2551 เวลา:7:52:13 น.  

ชื่อ :
Comment :
  *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 
รหัสส่งข้อความ
กรุณายืนยันรหัสส่งข้อความ

zkaru
Location :
กรุงเทพฯ Thailand

[Profile ทั้งหมด]

ให้ทิปเจ้าของ Blog [?]
ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 1 คน [?]




เรื่องที่อยากเขียน ... เรื่องที่พยายามเขียน ...
Friends' blogs
[Add zkaru's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.