Когда я использовал Apportable для моего исходного кода C ++, он не может найти символы, определенные в stdint.h
,
error: use of undeclared identifier 'UINT8_MAX'
Код хорошо работал с Xcode, и эта ошибка возникала только в Apportable. я добавил #include <cstdint>
, но это не было никакого эффекта.
Вот мой ток .cpp
файл.
#include <cstdint>
#include "Pixel.h"
namespace
Eonil
{
namespace
Graphics
{
using namespace std;
Pixel::Pixel(glm::vec4 const vector)
{
r = vector.r * ((Scalar)UINT8_MAX);
g = vector.g * ((Scalar)UINT8_MAX);
b = vector.b * ((Scalar)UINT8_MAX);
a = vector.a * ((Scalar)UINT8_MAX);
}
glm::vec4 const
Pixel::vector() const
{
return glm::vec4(((Scalar)r) / ((Scalar)UINT8_MAX),
((Scalar)g) / ((Scalar)UINT8_MAX),
((Scalar)b) / ((Scalar)UINT8_MAX),
((Scalar)a) / ((Scalar)UINT8_MAX));
}
}
}
Что мне не хватает?
Макросы доступны, когда определено __STDC_LIMIT_MACROS (кроме того, __STDC_CONSTANT_MACROS, похоже, также отсутствует). Это, вероятно, неправильно gated или отсутствует при компиляции c ++. Objective-C и C используют эти определения для UINT8_MAX и сопутствующих макросов. На данный момент вы можете определить оба этих макроса глобально, и это не должно иметь негативных последствий для вашего проекта.
Других решений пока нет …