我试图编译一个源代码包,并发现特定于版本的问题。stdint.h与C++不兼容?
当我在电脑上这样做时,一切都很顺利;但是当我在另一台计算机上编译它时,它会产生很多声明INT32_MAX未定义。这两台电脑都运行Debian系统,不同之处在于我的电脑使用了测试回购并且具有gcc 4.9,而另一台电脑使用了稳定的回购,它具有稍微老一点的gcc 4.7。
然后我详细看/usr/include/stdint.h
里面。通过惊奇的是,计算机声称未定义宏上,所有INT范围宏非C++条件中定义:
/**
* I forget the exact definition,
* but it looks like this:
*/
#ifndef __cplusplus ......
......
# define INT32_MIN XXX
# define INT32_MAX XXX
......
#endif
作为结果,包将不会看到这些标准范围宏,因为它是一个C++项目,并使用g ++进行编译。
为什么gcc 4.7的stdint.h
是这样设计的?这是否意味着gcc 4.7不希望我在C++中使用这些整数范围,并且gcc 4.9允许它?
而最重要的是:我该如何解决这个问题?
你会得到相同的如果你包含''? –
rubenvb
2014-10-07 12:43:19
'std :: numeric_limits'。 – 2014-10-07 12:45:42
在包含'stdint.h'之前,您需要定义一些宏,比如'__STDC_CONSTANT_MACROS',以在C++ 11之前获取C++所需的定义,请参阅C99标准。 – 2014-10-07 12:52:50