Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
#define LWIP_PLATFORM_DIAG(xyz) {char tmpbuf2[225];sprintf(tmpbuf2,xyz );print_dbg(tmpbuf2);}
#define LWIP_DEBUGF(debug,x) do { \
if ( A>B) \
{ LWIP_PLATFORM_DIAG(x); }
} while(0)
LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | 3, ("asdf= %x\n",1234));
предпроцессор все это разворачивает в
do { if ( ((0x80U | 0x40U | 3) & 0x80U) && ((0x80U | 0x40U | 3) & (0x80U|0x40U|0x20U|0x10U)) && ((s16_t)((0x80U | 0x40U | 3) & 0x03) >= 0x03)) { {char tmpbuf2[225]; sprintf(tmpbuf2,("asdf= %x\n",1234) );print_dbg(tmpbuf2);}; if ((0x80U | 0x40U | 3) & 0x08U) { while(1); } } } while(0);
Самое непонятное в этом, sprintf(tmpbuf2,("asdf= %x\n",1234) ); как оно должно работать?
(это все gcc)
Составить ответ | Вернуться на конференцию
Ответы
- ☞ ☞ Главная дефекационная машина (MBedder) ☞ ☞ - дристательныйAVR (21.10.2008 13:11:18 85.21.155.153, пустое, картинка)
- #define zzz "asdf=%x\n",1234 - Vit (13.10.2008 19:27:4 10.0.0.3,83.170.240.226, 82 байт)
- Ещё в голову пришло: можыть, sprintf у них там не вызов функции, а то же где-нить дефайном объявлен? - Сидоргек (13.10.2008 18:56:35 89.209.87.196, пустое)
- vc6 такое даже не компилит - ы (13.10.2008 18:11:2 80.92.98.211, пустое)
- НавернОе внешние скобки в ("asdf= %x\n",1234) это для препроцессора, что бы интерпретировал выражение как один параметр. В sprintf передаётся "asdf= %x\n",1234 без скобок - Сидоргек (13.10.2008 18:04:51 89.209.87.196, пустое)