On Wed, Jul 22, 2015 at 6:40 AM, Jakob Bohm <jb-openssl at wisemo.com> wrote: > On 22/07/2015 01:21, Jeffrey Walton wrote: > > For the stragglers, I don't think its a stretch to ask C99 in 2015. > > Visual Studio is often used on Windows, and it is not C99. > > Oh my, I was not aware it was still struggling for C99 :) I guess > Microsoft is still putting their energies into the "one-size, tablet > interface known as Windows 8, fits all, even on desktops without a > touchscreen". > > On the good side, MSVC does not need to be 100% compliant. It just > needs to support initialization at time of declaration. That > particular feature works. > > Isn't that a C89 (or maybe even K&R) feature? I thought that was C99. I think Ben Laurie even corrected me with some OpenSSL sample code because I initialized a variable without using -std=c99. > There is another problem though: Blindly initializing > every variable with dummy values (because the correct > value comes from one or more if() branches), only > achieves two things, both bad: > > - It hides correct warnings in case one of those if() > branches forgets to set the variable, before it is > read. > > - It potentially confuses less-than-halting-problem- > solving optimizers to needlessly generate code that > allocates and initializes the variable because they > cannot detect (within their compile time resource > limits) that the dummy value is (hopefully) never > used. > > The second problem is almost guaranteed to happen on > any compiler/option combination that would otherwise > falsely warn about the variable being maybe- > uninitialized. This is because most compilers > generate that warning as a side effect of the > optimizer trying to figure out if the garbage or > dummy value will be used by the code. > What, exactly is the problem? The program is in a known state. As far as I know, that's the best state to be in. And that's why managed languages like Java and .Net are so popular. When a variable is declared, it gets placed in a known state immediately. It relieves the programmer of remembering pesky details like, "remember to initialize your variables to a known state". Jeff