Eclipse CDT 无法解析 <stdint.h>。

3

我使用的Eclipse会对、等进行下划线标记,尽管我已经包含了并设置了预处理器路径!

为了知道发生这种情况的原因,我查看了。

#ifndef _GCC_WRAP_STDINT_H
#if __STDC_HOSTED__
# if defined __cplusplus && __cplusplus >= 201103L
#  undef __STDC_LIMIT_MACROS
#  define __STDC_LIMIT_MACROS
#  undef __STDC_CONSTANT_MACROS
#  define __STDC_CONSTANT_MACROS
# endif
# include_next <stdint.h>        // here
#else
# include "stdint-gcc.h"
#endif
#define _GCC_WRAP_STDINT_H
#endif

嗯,我觉得Eclipse好像无法识别#include_next。但我不知道解决方法...你能给我一些建议吗?


这是一个 C 还是 C++ 项目? - Ali
@Ali C. 但我猜在C++项目中也有同样的问题... - ikh
1
在C++中有一个众所周知的问题,请参见https://dev59.com/ZWYr5IYBdhLWcg3wuMX9,但在C语言中我不知道。那里的答案似乎不适用于您的情况。很抱歉,我无法提供帮助。 :( - Ali
1个回答

1
首先,为了避免使用#include_next,我们需要告诉eclipse__STDC_HOSTED__的值为0。在Project > Properties > C/C++ General > Path and Symbols中,将__STDC_HOSTED__添加为0
其次,在stdint-gcc.h中,您可以看到以下代码。
#ifdef __INT8_TYPE__
typedef __INT8_TYPE__ int8_t;
#endif

__INT8_TYPE__ 是gcc预定义的宏,我们也必须告诉eclipse。因此,从gcc -E -dM - < /dev/null中添加除了我们之前添加的__STDC_HOSTED__以外的所有宏。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接