Quote Originally Posted by mark_ View Post
I claim that it might be very convenient for the programmer to choose such extensions, but as I said, there is a price. If you stick to the standard, you don't pay the price and your users don't pay it either.
Of course, but again it is a programmer's decision. I'd rather have a compiler giving me these features and only use them when I feel I need them, rather than not having them because someone like you decided it didn't fit their vision of 'what I need'.

Quote Originally Posted by mark_ View Post
I don't think, that there are really good technical reasons for using the gcc extensions, BSD obviously works without them and I bet their code and their performance did not get worse.
And I bet the kernel devs didn't request these extensions and then use them throughout the kernel without good reason, I know the Linux kernel code relies heavily on compiler extensions which allow it to have better control over branch prediction and cache lines which certainly has a great impact on performance.

Quote Originally Posted by mark_ View Post
Btw, just for fun let's exaggerate your argument, that gcc is free and therefore implementing a dialect is ok:
What if I write 100 free programs and you want to use them all...
That you would need to paint a gross exaggeration in order to make it into a problem only shows how little water your argument holds. If you want to adhere to standards YOU as a PROGRAMMER choose to do so, if you don't then the compiler allows YOU to make that choice and use compiler extensions.

Quote Originally Posted by mark_ View Post
So: if you want to justify excessive use of a language extension to me, create an official standard like GNU C first. Then your program uses GNU C which is not C and then I have no problem anymore, if clang cannot compile your code.
First off, in that case you must shun Clang/LLVM, not only does it have support for alot of GCC's extensions but it also has it's OWN EXCLUSIVE extensions which is not supported by any other compiler and thus 'forces' the you to compile it with Clang/LLVM, heck it's even mentioned in the very thread this 'article' points at. So with your arguments you are against BOTH GCC and Clang/LLVM, yet you only level criticism at GCC. Either you are just hypocritical or you simply lived in some fuzzy belief that Clang/LLVM only implemented 'standard' functionality.

Secondly by it's very nature and as made obvious by their name, extensions AREN'T standards, they are 'extensions' to existing standards, how can you fail to grasp that? And those who use these 'extensions' do so because they really feel they need what they offer, knowing full and well that there is no guaranteed compability across compiler toolchains given that they are NOT standards.

Also, you do realize that most of the features in later standards started as extensions and then elevated into standard functionality when they had proven their worth and stability?

In conclusion, both GCC, Clang/LLVM, Intel Compiler implements compiler _extensions_ which offer functionality beyond what the standards define. These _extensions_ are not supported across all compilers although some are, GCC has exclusively supported extensions, Clang/LLVM has exclusively supported extensions and same goes for ICC.

I find it hard to believe you are a programmer at all, you sound like a person who just compiles other people's code and throws a fit if it doesn't compile with *your* favourite compiler. And if you feel you have a legitimate reason to complain then you should take those complaints to the actual programmers who CHOSE to USE these extensions, not to the compiler vendors who make them available at the request of those same programmers. And you should certainly not single out GCC as some culprit, because all these compilers implement extensions and each with their own exclusive ones.