On Mon, Mar 21, 2016 at 8:40 PM, Scott Doctor <scott at scottdoctor.com> wrote: > you are missing > > using System;
whatever. It still fails because it says the variable is uninitilalized. THe only thing that doesn't is actually running it. That same pattern not matter what the language triggers warning/error checkers > > ------------ > Scott Doctor > scott at scottdoctor.com > ------------------ > > > On 3/21/2016 5:21 PM, J Decker wrote: >> >> So far I just see analysis tools fail for the same sorts of valid code... >> >> this is a bit of C# but the same idea causes the same warnings and >> there's nothign tecniclally wrong with this. >> >> >> >> class test >> { >> struct large_struct { public int x; } >> bool arbitrary_true_false = true; >> void method() >> { >> bool initialized = false; >> large_struct s; >> if( arbitrary_true_false ) >> { >> initialized = true; >> s.x = 1; >> } >> if( initialized ) >> { >> Console.WriteLine( "this fails(during compile) as >> uninitialized: {0}", s.x ); >> } >> } >> } >> >> On Mon, Mar 21, 2016 at 4:35 PM, James K. Lowden >> <jklowden at schemamania.org> wrote: >>> >>> On Mon, 21 Mar 2016 13:48:06 -0700 >>> Scott Perry <numist at apple.com> wrote: >>> >>>> Compilers allow you to choose your standard; --std=c11 means >>>> something very specific (and unchanging) >>> >>> They do. And that covers what the standard covers. The standard also >>> has limits. It includes constructs that are syntactically permitted >>> but whose behavior is left undefined, known by the scarred as "UB" for >>> "undefined behavior". An example from Clang's discussion is >>> >>> int i = 10 << 31; >>> >>> The standard says << is a shift operator. It places no limit on the >>> number of bits to be shifted. If that number is so large that the >>> product cannot be represented by the assigned variable, that is *not* >>> an error. The standard allows the compiler to do anything or nothing >>> with it. As you may imagine, the varieties of anything and nothing are >>> many. >>> >>> Compiler writers are well aware that "nothing" is faster done than >>> "something". Over time, they have gotten more aggressive in simply >>> deleting UB code. As a consequence, programmers who thought they wrote >>> standards-conforming code get burned when they upgrade/change >>> compilers. Mysterious and sometimes subtle errors are introduced by >>> the compiler for the user's benefit. >>> >>> Your googlefu will turn up lots of discussion. One I liked that wasn't >>> on Page 1: >>> >>> >>> http://blog.frama-c.com/index.php?post/2013/10/09/Overflow-float-integer >>> >>> --jkl >>> _______________________________________________ >>> sqlite-users mailing list >>> sqlite-users at mailinglists.sqlite.org >>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >> >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users at mailinglists.sqlite.org >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >> >> > > _______________________________________________ > sqlite-users mailing list > sqlite-users at mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users