necpp icon indicating copy to clipboard operation
necpp copied to clipboard

#pragma GCC breaks CLANG and older GCCs

Open StefanBruens opened this issue 2 years ago • 0 comments

This pragma is incompatible with older GCCs and CLANG:

https://github.com/tmolteno/necpp/blob/870f110875ef7e1fc951cbd489fde20ac9a93284/src/nec2cpp.cpp#L590-L593

[   56s] nec2cpp.cpp: In function 'int readmn(FILE*, FILE*, char*, int*, int*, int*, int*, nec_float*, nec_float*, nec_float*, nec_float*, nec_float*, nec_float*)':
[   56s] nec2cpp.cpp:591:32: error: unknown option after '#pragma GCC diagnostic' kind [-Werror=pragmas]
[   56s]  #pragma GCC diagnostic ignored "-Wstringop-truncation"

The correct approach is to use strncpy(gm, "EN", 3); or memcpy(gm, "EN", 2); and remove the #pragma.

And the function signature can be changed to
int readmn(FILE*, FILE*, char[3], int*, int*, int*, int*, nec_float*, nec_float*, nec_float*, nec_float*, nec_float*, nec_float*).

This allows the compiler to check the array bounds at compile time.

StefanBruens avatar Feb 19 '23 17:02 StefanBruens