<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Mar 28, 2014 at 5:40 PM, Glynn Clements <span dir="ltr"><<a href="mailto:glynn@gclements.plus.com" target="_blank">glynn@gclements.plus.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><br>
Vaclav Petras wrote:<br>
<br>
> which C and C++ standards we are using? And which we want to use? Do we<br>
> even care? Since we can always fix it if somebody wants to build GRASS on<br>
> some other compiler than relatively new GCC.<br>
<br>
</div>C code is supposed to conform to C89 and POSIX.<br>
<br>
There are no standards for C++ code.<br></blockquote><div><br></div><div>I would say that for GCC, we should go with:</div><div><br></div><dt style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">

‘<samp><span class="">c++98</span></samp>’</dt><dt style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">‘<samp><span class="">c++03</span></samp>’</dt><div><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">The 1998 ISO C++ standard plus the 2003 technical corrigendum and some additional defect reports. Same as</span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> </span><samp style="color:rgb(0,0,0)"><span class="">-ansi</span></samp><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> </span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium">for C++ code.</span><span style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"> </span></div>

<div>(<a href="http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options">http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options</a>)</div><div><br></div><div>I'll will set this for may compilation and see what will happen. The only alternative is to say that all C++ capable compilers will be new anyway and than we can go with latest (C++11 or later).</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class=""><br>
> For example, lib/gis build fails with gcc option -std=c89 [1] because of<br>
> missing `hypot` buildin [2].<br>
<br>
</div>hypot() is specified by POSIX.<br>
<br>
Using -std=c89 or -ansi will, by default, omit the POSIX extensions<br>
from any headers which are specified by C89. To re-enable them, you<br>
need something along the lines of:<br>
<br>
        -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE -D_SVID_SOURCE<br>
<br>
We already require POSIX for open() etc, so there isn't much point in<br>
excluding POSIX functions which are declared in the C89 headers.<br>
<span class=""><font color="#888888"><br></font></span></blockquote><div>Hm, I hoped that I missed some -posix in GCC but there is apparently none. And if you are unsure about that -D options, I don't know how to enforce the right standards.</div>

<div><br></div><div>So, we have all GNU GCC extensions enabled which is good in the sense that we have many functions available. The bad thing is that it is hard to say which are allowed without looking to the standard.</div>

<div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class=""><font color="#888888">
--<br>
Glynn Clements <<a href="mailto:glynn@gclements.plus.com">glynn@gclements.plus.com</a>><br>
</font></span></blockquote></div><br></div></div>