From 8177d03b7ce07ec0811c3cccef20c75874fa2f51 Mon Sep 17 00:00:00 2001 From: Stefan Hoffmann Date: Wed, 15 Jun 2022 12:05:49 +0200 Subject: [PATCH] only use cdecl calling convention on i386 architectures This removes a warning when compiling on x64 plattforms. The C# DllImportAttribute ignores this calling canvention as well, but dosn't give a warning. --- rcldotnet/rcldotnet_macros.h | 12 ++++++++++-- rosidl_generator_dotnet/resource/msg.h.em | 12 ++++++++++-- rosidl_generator_dotnet/resource/srv.h.em | 12 ++++++++++-- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/rcldotnet/rcldotnet_macros.h b/rcldotnet/rcldotnet_macros.h index d80c676f..2b0800d1 100644 --- a/rcldotnet/rcldotnet_macros.h +++ b/rcldotnet/rcldotnet_macros.h @@ -18,11 +18,19 @@ #if defined(_MSC_VER) #define RCLDOTNET_EXPORT __declspec(dllexport) #define RCLDOTNET_IMPORT __declspec(dllimport) - #define RCLDOTNET_CDECL __cdecl + #if defined(_M_IX86) + #define RCLDOTNET_CDECL __cdecl + #else + #define RCLDOTNET_CDECL + #endif #elif defined(__GNUC__) #define RCLDOTNET_EXPORT __attribute__((visibility("default"))) #define RCLDOTNET_IMPORT - #define RCLDOTNET_CDECL __attribute__((__cdecl__)) + #if defined(__i386__) + #define RCLDOTNET_CDECL __attribute__((__cdecl__)) + #else + #define RCLDOTNET_CDECL + #endif #else #define RCLDOTNET_EXPORT #define RCLDOTNET_IMPORT diff --git a/rosidl_generator_dotnet/resource/msg.h.em b/rosidl_generator_dotnet/resource/msg.h.em index 2d113edb..a81516f3 100644 --- a/rosidl_generator_dotnet/resource/msg.h.em +++ b/rosidl_generator_dotnet/resource/msg.h.em @@ -18,12 +18,20 @@ msg_prefix = "RCLDOTNET_{0}_{1}_{2}".format(package_name, '_'.join(message.struc // Microsoft #define @(msg_prefix)_EXPORT __declspec(dllexport) #define @(msg_prefix)_IMPORT __declspec(dllimport) - #define @(msg_prefix)_CDECL __cdecl + #if defined(_M_IX86) + #define @(msg_prefix)_CDECL __cdecl + #else + #define @(msg_prefix)_CDECL + #endif #elif defined(__GNUC__) // GCC #define @(msg_prefix)_EXPORT __attribute__((visibility("default"))) #define @(msg_prefix)_IMPORT - #define @(msg_prefix)_CDECL __attribute__((__cdecl__)) + #if defined(__i386__) + #define @(msg_prefix)_CDECL __attribute__((__cdecl__)) + #else + #define @(msg_prefix)_CDECL + #endif #else // do nothing and hope for the best? #define @(msg_prefix)_EXPORT diff --git a/rosidl_generator_dotnet/resource/srv.h.em b/rosidl_generator_dotnet/resource/srv.h.em index 46c279ba..047333f7 100644 --- a/rosidl_generator_dotnet/resource/srv.h.em +++ b/rosidl_generator_dotnet/resource/srv.h.em @@ -7,12 +7,20 @@ srv_prefix = "RCLDOTNET_{0}_{1}_{2}".format(package_name, '_'.join(service.names // Microsoft #define @(srv_prefix)_EXPORT __declspec(dllexport) #define @(srv_prefix)_IMPORT __declspec(dllimport) - #define @(srv_prefix)_CDECL __cdecl + #if defined(_M_IX86) + #define @(srv_prefix)_CDECL __cdecl + #else + #define @(srv_prefix)_CDECL + #endif #elif defined(__GNUC__) // GCC #define @(srv_prefix)_EXPORT __attribute__((visibility("default"))) #define @(srv_prefix)_IMPORT - #define @(srv_prefix)_CDECL __attribute__((__cdecl__)) + #if defined(__i386__) + #define @(srv_prefix)_CDECL __attribute__((__cdecl__)) + #else + #define @(srv_prefix)_CDECL + #endif #else // do nothing and hope for the best? #define @(srv_prefix)_EXPORT