[llvm-dev] Disabling inline compilation (Clang with VS2019)

David Blaikie via llvm-dev llvm-dev at lists.llvm.org
Mon Sep 27 11:43:56 PDT 2021


On Mon, Sep 27, 2021 at 8:28 AM John Emmas via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Aaaargh!!  I just realised this was a spelling mistake at my end.
> Here's my original example...
>
> On 22/09/2021 13:22, John Emmas wrote:
> >
> > #if defined (BUILDING_DLL)
> >   #define DLL_API __declspec(dllexport)
> > #else
> >   #define DLL_API __declspec(dllimport)
> > #endif
> >
>
> But because the library can be built for different platforms, the actual
> code here was slightly more complicated - looking like this:-
>
>      #if defined (COMPILER_MSVC)
>        #if defined (BUILDING_DLL)
>          #define DLL_API __declspec(dllexport)
>        #else
>          #define DLL_API __declspec(dllimport)
>        #endif
>      #else
>          #define DLL_API
>      #endif
>
> I'd changed the first line to read #if defined (COMPILER_MSVC) ||
> defined (COMPILER_CLANG) - except that in the actual VS project file I'd
> then mis-spelled COMPILER_CLANG - so apologies and thanks to everyone
> who's helped here...  I'd spent days looking through header files and
> source files without even thinking to check the VS project itself :-(
>
> Fixing this has made it compile and link with optimizations disabled
> ('/Ob0') but I guess I'll need to check what happens once I enable them
> again.  If header-defined functions are routinely treated as inlined, I
> guess the problem might come back again :-(
>
> I suppose this brings up an obvious question...  when building with MSVC
> I could have used the built-in preprocessor directive _MSC_VER rather
> than using my own COMPILER_MSVC - so does Clang have something built-in
> that's always similarly #defined?  Or even better - does anyone know if
> there's some preprocessor directive that's always specified for both
> compilers (i.e. when they're being used with Visual Studio) ?
>

https://clang.llvm.org/docs/UsersManual.html#microsoft-extensions
"For compatibility with existing code that compiles with MSVC, clang
defines the _MSC_VER and _MSC_FULL_VER macros."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210927/ed1e88a3/attachment.html>


More information about the llvm-dev mailing list