Sahir Hoda created PROTON-629:

             Summary: Can't include proton-c header files in c-only 
applications in visual studio
                 Key: PROTON-629
             Project: Qpid Proton
          Issue Type: Bug
          Components: proton-c
    Affects Versions: 0.7
         Environment: Windows
            Reporter: Sahir Hoda

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 

"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 
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
+#if !defined(__cplusplus) && defined(_MSC_VER)
+// visual studio and not using c++
+  #define inline __inline
 #endif /* type_compat.h */

This message was sent by Atlassian JIRA

Reply via email to