Показали нам однажды на лекции пример макроопределения.
#define MIN(x,y) ((x) < (y) ? (x) : (y))
Ежу, читавшему On Lisp, понятно, что пример бажный (может произойти
множественное вычисление аргументов). При этом, в мануале по cpp
написано, что в стандартном С такой баг пофиксить невозможно.
На лиспе корректное определение выглядит так
(defmacro my-min (x y)
(let ((x1 (gensym))
(y1 (gensym)))
`(let ((,x1 ,x)
(,y1 ,y))
(if (< ,x1 ,y1)
,x1
,y1))))
А еще и говорят, что на С даже ногу можно прострелить... :/ А каком
простреле ноги может идти речь, если даже с элементарными задачами
язык справится не может?
←
1
2
3
→
Ответ на:
комментарий
от nsav-ng
Ответ на:
комментарий
от unDEFER
Ответ на:
комментарий
от GameMagister
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от GameMagister
Ответ на:
комментарий
от nsav-ng

Ответ на:
комментарий
от unDEFER
Ответ на:
комментарий
от nsav-ng

Ответ на:
комментарий
от unDEFER
Ответ на:
комментарий
от nsav-ng
Ответ на:
комментарий
от nsav-ng
Ответ на:
комментарий
от nsav-ng


Ответ на:
комментарий
от GameMagister
Ответ на:
комментарий
от bugmaker
Ответ на:
комментарий
от nsav-ng
Ответ на:
комментарий
от nsav-ng
Ответ на:
комментарий
от nsav-ng

Ответ на:
комментарий
от GameMagister
Ответ на:
комментарий
от GameMagister
Ответ на:
комментарий
от bugmaker

Ответ на:
комментарий
от CrazyPit
Ответ на:
комментарий
от nsav-ng

Ответ на:
комментарий
от bugmaker
Ответ на:
комментарий
от nsav-ng
Ответ на:
комментарий
от nsav-ng

Ответ на:
комментарий
от DonkeyHot
Ответ на:
комментарий
от nsav-ng

Ответ на:
комментарий
от PashaKustov
Ответ на:
комментарий
от bugmaker
Ответ на:
комментарий
от bugmaker
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от MAPA3MATuK
Ответ на:
комментарий
от nsav-ng
Ответ на:
комментарий
от MAPA3MATuK
Ответ на:
комментарий
от MAPA3MATuK
Ответ на:
комментарий
от Begemoth
Ответ на:
комментарий
от nsav-ng

Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от MAPA3MATuK
Ответ на:
комментарий
от nsav-ng
Ответ на:
комментарий
от guardian

Ответ на:
комментарий
от Orlangoor

Ответ на:
комментарий
от MAPA3MATuK
Ответ на:
комментарий
от Begemoth

Ответ на:
комментарий
от Begemoth

Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.