C++ CDT索引器错误,类型DEF在ifdef内
我的索引器有问题。它批评了套接字在方法中的使用:C++ CDT索引器错误,类型DEF在ifdef内,c++,typedef,eclipse-cdt,conditional-compilation,indexer,C++,Typedef,Eclipse Cdt,Conditional Compilation,Indexer,我的索引器有问题。它批评了套接字在方法中的使用: #ifndef TEST_H_ #define TEST_H_ #ifdef linux typedef int SOCKET; #endif class Test { public: void test(const SOCKET src); }; #endif /* TEST_H_ */ 我的eclipse版本是:版本:Luna Service Release 2(4.4.2)构建id:20150219-0600 我的CDT是8
#ifndef TEST_H_
#define TEST_H_
#ifdef linux
typedef int SOCKET;
#endif
class Test {
public:
void test(const SOCKET src);
};
#endif /* TEST_H_ */
我的eclipse版本是:版本:Luna Service Release 2(4.4.2)构建id:20150219-0600
我的CDT是8.6.0.201502131403
以下是来自索引器的消息:无法解析类型“SOCKET”
一些事实:
- “linux”已定义李>
- 如果我删除typedef周围的“ifdef”,索引器将不再报告任何错误李>
Rainer是灰显的ifdef,如下图所示: 如果是这样,那么CDT不知道定义了“linux”符号。要定义它,您有一些选择,具体取决于您的设置 管理品牌 Managed make意味着您允许CDT为您创建make文件 选项1:您是使用GCC的本地linux,那么我怀疑出了什么问题,请提交一个bug 选项2:您正在进行交叉编译,那么这是项目/工作区的设置问题(不幸的是,这里需要更多详细信息) 标准品牌 标准make意味着您正在自己编写makefile(或者其他工具正在编写) 选项1:您没有从EclipseCDT中运行构建,因此CDT不知道您的构建设置是什么。CDT分析运行make的输出,以确定应该设置什么 选项2:您在CDT中运行make,但命令回音被抑制(@on命令)。试着在没有这个的情况下运行make 选项3:您需要告诉CDT已定义的符号。告诉CDT:
多亏了乔纳。我使用标准品牌,选项3解决了我的问题。非常好。如果你能接受我的回答,那就太好了。我还有一个额外的问题。我在Eclipse中运行构建,我认为“linux”的定义是因为构建本身可以工作。只有索引器报告问题。那么索引器中没有问题吗?据我所知,索引器找不到定义的“linux”!我如何检查索引器和/或编译器的定义?请在一个新问题中询问,我将很高兴在那里回答。我的愿望是建立关于EclipseCDT的高质量问题和答案,但为了实现这一点,我们需要您提出的每个好问题都以问题的形式结束,而不是隐藏在评论中。经过再三思考,我认为您提出了这个问题。我将修改我的答案,以便能够首先诊断索引器为什么不能正确地看到linux的问题。你能确认操作系统和GCC版本吗。特别是你使用“GCC”或类似“ARM Linux GCC”之类的东西吗?在为你的特定情况整理答案的同时,你可以看看扫描仪发现手册,我的操作系统是OpenSSUE 13.1,64位GCC是C++(SUSELinux)4.8 1 20130909 [ GCC-4G8分支修订版202388 ]编译器是通过Eclipse自动设置的环境变量CXX定义的