Как найти размер чужой структуры в sbcl? - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь получить размер чужой структуры в SBCL (чтобы буфер данных соответствовал размеру чужой функции).В C или Pascal sizeof () выполняет ту же работу.Мой подход таков:

(define-alien-type MY-STRUCT
(struct MY-STRUCT
        (MY-FIELD (array char 30))))

(defmacro size-of (type) 
    (let ((x (gensym)))
        `(let ((,x (make-alien (array ,type 2))))
             (- (sb-sys:sap-int (alien-sap (deref (deref ,x) 1)))
                (sb-sys:sap-int (alien-sap (deref (deref ,x) 0)))))))

(size-of MY-STRUCT) ;; => 30

Есть ли правильный способ получить размер чужой структуры в SBCL?

...