C Define
Thursday, February 28, 2013, 09:12 PM
ข้อควรระวังกับการใช้ #define
ใน C คือว่ามันจะทำงานเหมือนการ replace string ไปตรงๆ อย่างนี้
#define ADD(x,y) x+y
...
printf("%f\n", ADD(5.0, 8.0/2.0) * 2.0);
printf("%f\n", 2.0 * ADD(5.0, 8.0/2.0));
...
บรรทัดแรกจะแปลงเป็น
\[5+\frac82\times2 = 5+\left(\frac82\times2\right) = 5 + 8 = 13\]ส่วนบรรทัดที่สองจะแปลงเป็น
\[2\times5+\frac82 = (2\times5)+\frac82 = 10 + 4 = 14\]ถ้าจะให้มันทำงานถูกต้อง ให้เปลี่ยนวิธีเขียนใหม่เป็น
#define ADD(x,y) ((x)+(y))
…วงเล็บเยอะน่าดู กลับไปเขียนแบบ function เหอะ 555+
Originally published on: Google+
author