そのため、私たちが使用するベンダーは、次のことを行うライブラリ (主に 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
ライブラリの奥深くにあるヘッダーの1つ。問題は、ライブラリが次のような単純な C++11 コードに含まれていることです。
#include <iostream>
#include <vendor/library.h>
int main(void)
{
std::int32_t std_i = 0;
return std_i;
}
すぐにコンパイラ エラー ( s_int32
is not in std::
) が発生します。質問は、ベンダーにこの修正をしつこく要求する以外に、私たちのコードでこれを回避する方法はありますか? (ところで、ヘッダーの#include <cstdint>
前に私が試したこと、運がない、extern "C"
ラッパー、運がない。ヘッダーがインストールされて/usr/include/
いるので、インクルードの順序を制御できない...)