> On Aug 31, 2022, at 2:55 PM, Qing Zhao via Gcc-patches > <gcc-patches@gcc.gnu.org> wrote: > > > >> On Aug 31, 2022, at 1:21 PM, Joseph Myers <jos...@codesourcery.com> wrote: >> >> On Wed, 31 Aug 2022, Qing Zhao via Gcc-patches wrote: >> >>>> "a GNU extension" suggests a particular language feature, but I think >>>> you're actually referring here to a whole language version rather than an >>>> individual feature. >>> >>> Is “not supported by GNU extension GNU89” better? >> >> There are no existing diagnostics referring to GNU89 at all. I don't >> think "GNU extension" needs to be mentioned in that diagnostic, but I also >> think that having that diagnostic at all is ill-conceived. >> >>>> In any case, -std=gnu89 supports flexible array members. >>> >>> Yes, but only [0],[1] are supported as flexible array members. The C99 >>> flexible array member [] is not supported by GNU89, right? >> >> C99 flexible array members are fully supported in GNU89 mode. In general, >> any feature from a new language version that doesn't affect code that was >> valid in previous versions is likely to be accepted as an extension with >> options for older language versions. > > > We have a previous discussion on this: > (https://gcc.gnu.org/pipermail/gcc-patches/2022-July/599067.html) > > And looks like that the previous conclusion was wrong… please see the > following: > > ====== > >> How is level 3 (thus -fstrict-flex-array) interpreted when you specify >> -std=c89? How for -std=gnu89? > > 1. what’s the major difference between -std=c89 and -std=gnu89 on flexible > array? (Checked online, cannot find a concrete answer on this). > ** my understanding is: -std=c89 will not support any flexible array > (neither [], [0], [1]), but -std=gnu89 will support [0] and [1], but not []. > Is this correct? > > If my answer to the first question is correct, then: > > 2. When -fstrict-flex-array=n and -std=c89 present at the same time, which > one has the higher priority? > ** I think that -std=c89 should be honored over -fstrict-flex-array, > therefore we should disable -fstrict-flex-array=n when n > 0 and issue > warnings to the user. > > > 3. how about -fstrict-flex-array=n and -std=gnu89 present at the same time? > ** When -std=gnu89 present, [] is not supported. So, we need to issue > an warning to disable -fstrict-flex-array=3; but level 1 and level 2 is Okay. > > We also need to document the above. > ==== > > So, from my understanding from what you said so far, > > -std=c89 will not support any flexible array (neither [], [0], [1]), but > -std=gnu89 will support ALL flexible array including [0], [1], and []. > > Is this understanding correct?
And also for C++: -std=c++98 will not support any flexible array, but -std=gnu++98 will support ALL flexible array ([0],[1].[])? Qing > > thanks. > > Qing > > >> >> -- >> Joseph S. Myers >> jos...@codesourcery.com