guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: deprecated symbol warnings and Windows


From: Ken Raeburn
Subject: Re: deprecated symbol warnings and Windows
Date: Wed, 18 May 2005 15:18:48 -0400

On May 14, 2005, at 08:40, Neil Jerram wrote:
The warnings can be disabled while building guile (only while building deprecated.c, I hope) so that -Werror doesn't kill the build.
In the header files, here's how it's taking shape, roughly:
#if defined(SCM_DISABLE_DEPRECATION_WARNINGS)
# define SCM_DECL_DEPRECATED /* empty */
#elif __GNUC__ >= 3
# define SCM_DECL_DEPRECATED __attribute__((deprecated))
#elif defined _WIN32
Does the __declspec syntax work for all Windows compilers?  If it's 
actually specific to MSVC (which is the only compiler I'm familiar 
with), you should use _MSC_VER.  If it's for all Windows compilers, 
I'm surprised by the underscore - i.e. I'd normally use WIN32; are 
WIN32 and _WIN32 equivalent?
I've done a bit more investigating, and it appears that 
__declspec(deprecated) is new with Visual Studio 2003, or maybe 2002.  
So there would be no warning with older compilers, probably.  (And the 
older compiler we've been using at work defines _WIN32 but not WIN32.)  
For now, in my code, I'm testing _MSC_VER >= 1310.
In looking at the current headers, I think when I'm changing macros 
into functions, I need to stick "SCM_API" in front where I'd use 
"extern" normally, to get the Windows DLL import/export specs right?  
So this conversion will actually be adding to the exported-symbol list 
of the DLL.  (Has anyone thought about limiting exported symbols on 
UNIX?)  I've just gotten access to the newer compilers, so I should be 
able to run some tests any make sure I've gotten the syntax right for 
multiple declspecs etc.
Oh, and based on the discussions, I'm sticking with the "#define foo 
foo" form for now, rather than renaming symbols.
Ken




reply via email to

[Prev in Thread] Current Thread [Next in Thread]