因此,我们使用的供应商提供了一个库(主要用于 C,具有一些 C++ 支持),它执行以下操作:
#ifndef int64_t
#define int64_t s_int64
#endif
#ifndef int32_t
#define int32_t s_int32
#endif
#ifndef int16_t
#define int16_t s_int16
#endif
#ifndef int8_t
#define int8_t s_int8
#endif
在他们图书馆深处的一个标题中。现在的问题是,一旦他们的库包含在简单的 C++11 代码中,例如:
#include <iostream>
#include <vendor/library.h>
int main(void)
{
std::int32_t std_i = 0;
return std_i;
}
立即出现编译器错误,(s_int32
不在std::
)。所以问题是,除了唠叨供应商来解决这个问题,有没有办法在我们的代码中解决这个问题?(顺便说一句。我尝试过的东西,#include <cstdint>
在他们的标题之前,没有运气;extern "C"
包装,没有运气。标题是安装的,/usr/include/
所以我猜也无法控制包含顺序......)