0

所以,我有一些平台相关的代码正在使用 winusb 或 libusb 在 Linux 和 Windows 上编译。我使用预编译器指令来包含正确的头文件并创建正确的接口:

#include "../path/myusbint.hpp"
#ifdef WIN32 
#include "../path/winusbint.h"
#else
#include "../path/libusbint.h"
#endif
boost::shared_ptr<myusbinerface> usbinterface;

#ifdef WIN32
    usbinterface.reset(new winusbint);
#else
    usbinterface.reset(new libusbint);
#endif

在 Windows 上它编译得很好,但在 Linux (gcc) 上我得到了错误:

error: expected type-specifier before `libusbint'
error: expected ')' before `libusbint'
4

1 回答 1

3

可能,您未向我们展示的某些代码使用了USBInterfaceLibUSB在尚未声明的位置调用的类型。您需要向我们展示导致错误的实际代码。

如果这是正确的类型名称,请确保使用它的任何文件都包含定义该类型的标头,或者如果您不需要完整定义,则包含前向声明。

如果是错误的名称,则将其更改为正确的名称。也许应该myusbinerface与您发布的代码相匹配?myusbinterface或者也许你在你的真实代码中拼写正确( )?

于 2013-10-04T10:39:01.440 回答