Uploaded image for project: 'Qpid Proton'
  1. Qpid Proton
  2. PROTON-629

Can't include proton-c header files in c-only applications in visual studio

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • proton-0.7
    • proton-0.13.0
    • proton-c
    • 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;

      1. 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 */

      Attachments

        Activity

          People

            astitcher Andrew Stitcher
            shoda Sahir Hoda
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - 1h
                1h
                Remaining:
                Remaining Estimate - 1h
                1h
                Logged:
                Time Spent - Not Specified
                Not Specified