Компилятор cl выдает ошибки для внешнего заголовочного файла - PullRequest
0 голосов
/ 13 ноября 2018

Я работаю над проектом, в котором мне нужно управлять некоторым оборудованием через API, предоставленный производителем устройства. Приведены примеры кода, которые должны хорошо скомпилироваться. Некоторые функции определены в файлах .h-header, предоставляемых с API. Когда я копирую и вставляю один из примеров программирования в мой .c-файл (включая ссылочные .h-заголовки в той же папке), компилятор cl, к которому я обращаюсь через командную строку Native Tools VS 2017, генерирует исключения / ошибки, в основном Ошибки C2059 и C2061. Например:

Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25019 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

pco_controller.c
c:\users\optical microscope\desktop\vinzenz\pco.edge 5.5\pco_controller\sc2_SDKS
tructures.h(155): error C2061: syntax error: identifier 'SHORT'
c:\users\optical microscope\desktop\vinzenz\pco.edge 5.5\pco_controller\sc2_SDKS
tructures.h(156): error C2061: syntax error: identifier 'ZZwAlignDummy'
c:\users\optical microscope\desktop\vinzenz\pco.edge 5.5\pco_controller\sc2_SDKS
tructures.h(156): error C2059: syntax error: ';'
c:\users\optical microscope\desktop\vinzenz\pco.edge 5.5\pco_controller\sc2_SDKS
tructures.h(157): error C2061: syntax error: identifier 'dwStatusDll'
c:\users\optical microscope\desktop\vinzenz\pco.edge 5.5\pco_controller\sc2_SDKS
tructures.h(157): error C2059: syntax error: ';'
c:\users\optical microscope\desktop\vinzenz\pco.edge 5.5\pco_controller\sc2_SDKS
tructures.h(158): error C2061: syntax error: identifier 'dwStatusDrv'
c:\users\optical microscope\desktop\vinzenz\pco.edge 5.5\pco_controller\sc2_SDKS
tructures.h(158): error C2059: syntax error: ';'
c:\users\optical microscope\desktop\vinzenz\pco.edge 5.5\pco_controller\sc2_SDKS
tructures.h(159): error C2059: syntax error: '}'

Когда мы смотрим в файл sc2_SDKStructures.h, мы находим:

typedef struct                         // Buffer list structure for  PCO_WaitforBuffer
{
 SHORT sBufNr;
 WORD  ZZwAlignDummy;
 DWORD dwStatusDll;
 DWORD dwStatusDrv;                    // 12
} PCO_Buflist; 

Поскольку я совершенно новичок в C-программировании, я не понимаю ошибок и, учитывая тот факт, что заголовки были предоставлены производителем оборудования, я не понимаю, почему их код должен быть неправильным.

...