[
https://issues.apache.org/jira/browse/PROTON-67?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13473425#comment-13473425
]
Andrew Stitcher commented on PROTON-67:
---------------------------------------
I also second Cliff's point about the #ifdef test being incorrect: Id say that
the correct test would probably be something like:
#if defined(__STDC_VERSION) && __STDC_VERSION__ >= 199901L
...[existing code]
#elif __cplusplus
...[replacement code]
#else
#error Unsupported compiiler
#endif
We could protect ourselves immediately from unsupported environments by using
just the STDC_VERSION test with the else and error.
[There is a useful stackoverflow article about detecting C language version
here - http://stackoverflow.com/questions/2115867/is-there-a-define-for-c99]
> Porting Issue -- Initialization with braces is not supported by Visual Studio.
> ------------------------------------------------------------------------------
>
> Key: PROTON-67
> URL: https://issues.apache.org/jira/browse/PROTON-67
> Project: Qpid Proton
> Issue Type: Improvement
> Components: proton-c
> Environment: Windows using Visual Studio 2010
> Reporter: Mary hinton
> Labels: build
>
> In the Windows port, I used ifdef(s) for the initializations to keep the
> current code for Linux, and added code to compile in Visual Studio. If there
> is no objection, maybe we could replace the current initialization code with
> the Visual Studio code and remove the #ifdef(s).
> Here's some examples:
> Eample1
> ssize_t pn_data_encode(pn_data_t *data, char *bytes, size_t size)
> {
> #ifndef _WINDOWS
> pn_atoms_t latoms = {.size=data->size + data->extras, .start=atoms};
> #else
> pn_atoms_t latoms;
> latoms.size = data->size + data->extras;
> latoms.start = atoms;
> #endif
>
> --------------------
> Example 2
>
> #ifndef _WINDOWS
> return (pn_bytes_t) {size, start};
> #else
> pn_bytes_t pnBytes;
> pnBytes.size = size;
> pnBytes.start= start;
> return pnBytes;
> #endif
> --------------------
> Example 3
>
> pn_do_transfer()
>
> #ifndef _WINDOWS
> delivery = pn_delivery(link, pn_dtag(tag.start, tag.size));
> #else
> pn_delivery_tag_t delivt;
> delivt.bytes = tag.start;
> delivt.size = tag.size;
> delivery = pn_delivery(link, delivt);
> #endif
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira