Я работаю над проектом, в котором мне нужно управлять некоторым оборудованием через 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-программировании, я не понимаю ошибок и, учитывая тот факт, что заголовки были предоставлены производителем оборудования, я не понимаю, почему их код должен быть неправильным.