@ramin_hal9001
#ecl #commonLisp is like this:

(defun foo ()
(let ((my-int 0))
(declare (:int my-int))
(ffi:c-progn (my-int)
"int *x;"
"for (x = &#0;*x<5;)" (incf my-int)
(format t "~d" my-int))
my-int))

must go through COMPILE-FILE.

Is that the good old `#asm' pragma in Halloween costume?

Did they really declare a keyword as a declaration?
And how is `unsigned long long' represented?

@screwlisp @ramin_hal9001

@vnikolov
well there's :uint64-t .
https://ecl.common-lisp.dev/static/files/manual/current-manual/Foreign-Function-Interface.html#Primitive-Types

This is a little misleading because ecl's static FFI, which generates C/C++ code and compiles it using the system's compiler. So it is less insane than you think.

@ramin_hal9001

Foreign Function Interface (ECL Manual)

Foreign Function Interface (ECL Manual)

@screwlisp

Thank you.
I have the nagging feeling that it isn't absolutely, positively portable to use `unsigned long long' and `uint64_t' interchangeably, now and forever, but I Am Not A Language Lawyer (IANALL™) and that is off off topic anyway.

I am sure that the implementation at hand that takes care of such embedding of C or C++ fragments is completely sane.
I replied from the user's perspective, but aesthetics is in the eyes of the programmer, of course.

#CommonLisp
#ECL
#EmbeddedC
#NumericTypeNamesInC

@ramin_hal9001