Я компилирую некоторый код C (предоставлю ссылку, если это действительно необходимо), используя GCC 8.2.0 в Linux и GCC 8.1.0 в Cygwin (последний - автоматическая сборка CI).
В Linux все проходит нормально.На Cygwin я получаю, среди прочего, следующие предупреждения:
C:\Users\travis\build\eyalroz\ssb-dbgen\src\bm_utils.c: In function 'e_str':
C:\Users\travis\build\eyalroz\ssb-dbgen\src\bm_utils.c:199:5: warning: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
strncpy(dest + loc, strtmp, len);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\travis\build\eyalroz\ssb-dbgen\src\bm_utils.c:197:11: note: length computed here
len = strlen(strtmp);
^~~~~~~~~~~~~~
и
C:\Users\travis\build\eyalroz\ssb-dbgen\src\build.c:697:5: warning: 'strncpy' specified bound 10 equals destination size [-Wstringop-truncation]
strncpy(d->dayofweek, weekday_names[d->daynuminweek-1],D_DAYWEEK_LEN+1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\travis\build\eyalroz\ssb-dbgen\src\build.c:698:5: warning: 'strncpy' specified bound 10 equals destination size [-Wstringop-truncation]
strncpy(d->month,month_names[d->monthnuminyear-1],D_MONTH_LEN+1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Я ничего не делаю, насколько я могу судить, что должно вызвать различныефлаги компиляции в обоих случаях.Почему я получаю предупреждения только в одной среде?Может ли это быть версия GCC?