Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
proton-0.7
-
Windows
Description
The public API for the proton-c library includes the function in delivery.h:
61:static inline pn_delivery_tag_t pn_dtag(const char *bytes, size_t size)
The 'inline' keyword is problematic for applications building with Visual Studio in a non-C++ mode. Per the msdn doc http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx:
"The inline keyword is available only in C+. The __inline and __forceinline keywords are available in both C and C+. For compatibility with previous versions, _inline is a synonym for __inline."
So 'inline' is only available for C++ applications, however C applications must use the '__inline' keyword instead.
To resolve this issue, I would suggest the following patch:
diff --git a/proton-c/include/proton/type_compat.h b/proton-c/include/proton/type_compat.h
index 9501d9a..9423cf1 100644
— a/proton-c/include/proton/type_compat.h
+++ b/proton-c/include/proton/type_compat.h
@@ -130,4 +130,9 @@ typedef unsigned __int64 uint64_t;
- endif
#endif // PNI_DEFINE_SSIZE_T
+#if !defined(__cplusplus) && defined(_MSC_VER)
// visual studio and not using c+
+ #define inline __inline
+#endif
+
#endif /* type_compat.h */