> Andrew Haley wrote: >> On 02/10/2010 04:44 PM, Dr. David Kirkby wrote: >>> According to >>> >>> http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options >>> >>> -std=foobar >>> >>> >>> `gnu9x' >>> GNU dialect of ISO C99. When ISO C99 is fully implemented in GCC, >>> this will become the default. The name `gnu9x' is deprecated. >>> >>> I really can not understand the logic of this. Why not default to ISO >>> C99 and let people enable GNUisms if they wish to? Then code should be >>> more portable across different compilers. With the GNUisms allowed by >>> default, it will make porting code more difficult to other stricter >>> compilers. >> >> This reasoning would make perfect sense if the primary goal of gcc's >> users was to write code to be ported to other compilers. > > I thought gcc's primary aim was to be a *C* compiler. That would suggest > to me > that enabling GNU extensions should not be the default, but an option. > > A lot of bugs are often discovered in code by testing on multiple > compilers and > multiple platforms. What one compiler misses, another finds. I could point > you > to various cases where the Sun compiler has rejected erroneous code that > gcc has > permitted. I'm sure you could no doubt find counter examples too. > > By generating code that should build with other compilers, problems can be > detected more easily. > >> However, >> many of GNU C's extensions are very useful, so it makes sense to have >> them available by default. That seems to be a weak argument. The standards are useful and are in place for good reasons. Not the least of which is that we can expect consistent code input files in a given format and dialect based on well published and industry accepted standards. The programming language, regardless if it be assembly, C, Fortran or Cobol, must be portable and acceptable to any compiler that complies with the published standards. Regardless of the vendor, be it Sun/Oracle, IBM, Microsoft, Intel or Linus's abacus basement compiler that he coded himself. If that compiler, a program which accepts as input files in the form of C language sources, simply abides by those published standards then we have a world where the student, the professional programmer and the next generation of open source contributors can live and work without the threat of single vendor rules which limit freedom and stifle innovation. It is only a small step on the slippery slope of non-standard "useful" things before we have code that simply does not work anywhere else. >> (Having said that, many of GNU C's >> extensions are part of C99 anyway, so the difference is smaller than >> with C89.) > > Personally I feel this is a bad decision, but I'm not a gcc developer. > > Dave At the risk of a significant argument, I would state rather loudly that any compiler which defaults to non-standard, regardless of usefulness, is at fault. -- Dennis Clarke dclarke@xxxxxxxxxxxxxx <- Email related to the open source Solaris dclarke@xxxxxxxxxxxxx <- Email related to open source for Solaris