[Ecls-list] Latest fixes

Goffioul Michael goffioul at imec.be
Tue Oct 26 03:53:16 UTC 2004


> * Port of ECL to Microsoft VC++ by Goffioul Michael. I have mostly 
> incorporated his patches, together with a new directory (ecl/msvc) in 
> which ECL can be build using NMAKE and MSVC++. This ports includes 
> rudimentary support for winsocket lisp streams.

Great!
I have some issues though, because it doesn't work as-is. Attached
you'll find a small patch to make it work:
1) you need to undefine "complex" because MSVC defines "complex" to
"_complex", which makes compilation fails; I worked around it in print.d
by not including "math.h" but I guess you cannot do that in the other
files
2) "__attribute__" function modifier is still use in one function
definition in external.h

Regarding non-returning functions, you have now removed all the
__attribute__((noreturn)) modifiers. I don't know if this is the
right thing to do, but you now get a lot of compiler warnings
because of functions that should return a value. Wouldn't it be
better to still use the "noreturn" attribute but make it compiler-
dependent, through a macro for example:

#ifdef _MSC_VER
#define noreturn_function(modifier,fun,args) \
	__declspec(noreturn) modifier fun args
#else
# ifdef __GNUC__
# define noreturn_function(modifier,fun,args) \
	modifier fun args __attribute__((noreturn))
# endif
#endif

Then you can define such a function like:

noreturn_function(extern void, FEerror, (const char *s, int narg, ...));

Michael.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: msvc.diff
Type: application/octet-stream
Size: 2665 bytes
Desc: msvc.diff
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20041026/eded27cb/attachment.obj>


More information about the ecl-devel mailing list