On 10/10/2016 17:29, Stephan Bosch wrote:
Op 10-10-2016 om 17:16 schreef Michael Felt:
On 10/10/2016 14:59, Stephan Bosch wrote:
Op 10-10-2016 om 14:39 schreef Michael Felt:
On 10-Oct-16 06:45, Aki Tuomi wrote:
Does your build end at some particular point? See **** DETAILS **** for in depth (I hope enough!) study/report.
Aki
I would guess this is not "c99" way...
It seems to fail on a C99 feature called Compound Literal (see http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf, Section 6.5.2.5).
It should be supported by AIX:
https://www.ibm.com/support/knowledgecenter/SSGH3R_13.1.3/com.ibm.xlcpp1313....
I have no idea why it would fail here.
Regards,
Stephan.
Well, if I had the budget to buy the latest version (version 13 is your doclink) - then maybe it would work for me. I do not have the resources to upgrade from v11. Sad day for me I guess.
Or lucky for me that "Compound Literal" is not used much - this is the first time I have run into it.
Well, older versions are supposed to support it too:
https://www.ibm.com/support/knowledgecenter/SSGH3R_11.1.0/com.ibm.xlcpp111.a...
As I said, or implied - reading the code was new - as actually, normally I saw the C89 way to do things.
I wrote a simple test for myself to come to grips on the syntax expected
nothing nested, but seems to be passing test #1
+1 typedef struct { +2 char * p1; +3 char * p2; +4 } http_auth_param_t; +5 +6 http_auth_param_t a[] = +7 { "a1", "a2", +8 "b1", "b2" +9 }; +10 +11 main() +12 { +13 http_auth_param_t b[] = { +14 (http_auth_param_t) { .p1 = "c1" }, +15 (http_auth_param_t) { .p2 = "e2" } +16 }; +17 +18 printf("%s\n", a[0].p1); +19 printf("%s\n", b[1].p2); +20 }
returns: !cc c99_comp_literal.c; ./a.out a1 e2
Regards,
Stephan.