У меня есть программа CLI, состоящая из одного файла vt.c, который компилируется и запускается под Windows (cmd.exe) с использованием Open Watcom. Я также могу скомпилировать его для Linux во время работы Open Watcom в Windows (и полученная сборка будет работать под Linux).
Однако, когда я пытаюсь скомпилировать его под Linux (используя make, который вызывает cc), я получаю 375 строк сообщений об ошибках. Вот некоторые из них, где многие последующие ошибки были похожи, я вставил только первые несколько:
In file included from vt.c:4:0:
process.h: In function ‘__declspec’:
process.h:45:22: error: storage class specified for parameter ‘execl’
process.h:46:1: error: expected declaration specifiers before ‘__declspec’
process.h:47:1: error: expected declaration specifiers before ‘__declspec’
...
In file included from vt.c:5:0:
ctype.h:48:1: warning: empty declaration
ctype.h:81:37: error: storage class specified for parameter ‘__ctype_b_loc’
ctype.h:82:6: warning: ‘__nothrow__’ attribute ignored
ctype.h:83:28: error: storage class specified for parameter ‘__ctype_tolower_loc’
ctype.h:84:6: warning: ‘__nothrow__’ attribute ignored
ctype.h:85:28: error: storage class specified for parameter ‘__ctype_toupper_loc’
ctype.h:86:6: warning: ‘__nothrow__’ attribute ignored
...
In file included from vt.c:6:0:
string.h:44:14: error: storage class specified for parameter ‘memcpy’
string.h:46:6: warning: ‘__nothrow__’ attribute ignored
string.h:49:14: error: storage class specified for parameter ‘memmove’
string.h:50:6: warning: ‘__nothrow__’ attribute ignored
string.h:57:14: error: storage class specified for parameter ‘memccpy’
string.h:59:6: warning: ‘__nothrow__’ attribute ignored
...
vt.c:28:1: warning: empty declaration
vt.c:41:1: warning: empty declaration
vt.c:50:1: error: parameter ‘maxtextlength’ is initialized
vt.c:70:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
vt.c:123:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
vt.c:158:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
...
vt.c:67:6: error: declaration for parameter ‘clearinputbuffer’ but no such parameter
vt.c:66:6: error: declaration for parameter ‘clrscr’ but no such parameter
vt.c:65:6: error: declaration for parameter ‘testrandom’ but no such parameter
...
string.h:579:14: error: declaration for parameter ‘stpncpy’ but no such parameter
...
ctype.h:268:12: error: declaration for parameter ‘toupper_l’ but no such parameter
...
process.h:45:22: error: declaration for parameter ‘execl’ but no such parameter
vt.c:608:1: error: expected ‘{’ at end of input
make: *** [vt] Error 1
Моя проблема, как (я уверен) у многих раньше: я просто хочу, чтобы она скомпилировалась.
Вопрос 3641178, кажется, предполагает, что порядок включаемых файлов важен, но заголовки, которые выдают ошибки, приходят ПОСЛЕ всех остальных включаемых файлов в vt.c.
Я попытался установить Open Watcom в Linux, и предоставленные заголовочные файлы совпадают. Насколько я знаю, это стандартные заголовочные файлы, и я не могу придумать причину, по которой они должны вызывать ошибки компиляции.
Если кто-нибудь сможет пролить свет на это, я был бы очень благодарен. Полный каталог можно найти в моем репозитории git по адресу git@github.com: megamasha / Vocab-Tester.git (https://github.com/megamasha/Vocab-Tester)