我遇到了eclipse C ++的问题。我的项目编译并运行,但eclipse(juno)一直说有数千个错误。例如,我的代码中有一个函数SetRun,eclipse提到了这个错误:“调用无效参数'候选者是:void SetRun(?)'”,而SetRun的类型是static void SetRun(uint32_t run);
我有很多类似的错误,其中eclipse似乎不理解函数的类型并放置'?'代替。
我也有很多这样的错误:“符号'*'无法解析。”
我认为这是同一问题的一部分。
我可以做些什么来让eclipse停止告诉我这些错误?
答案 0 :(得分:4)
我尝试了所提出的解决方案,它对我不起作用。有助于关闭该项目的CodeAnalysis。我去了Properties-> C / C ++ General->代码分析。选择使用项目设置并关闭所有错误。这当然是非常烦人和不幸的,我很高兴知道它何时被妥善修复。遗憾的是我们无法使用任何其他体面的IDE所具有的功能。
答案 1 :(得分:3)
实际上Eclipse是某种不稳定的项目。尝试清理并刷新项目。
答案 2 :(得分:1)
在Eclipse中:
答案 3 :(得分:0)
我有很多这些错误,试图让CODAN运行一些注定要用于Mac的代码。我的Mac SDK库通过符号链接包含在this question中(但不是全部 - 请继续关注!)最后,我发现我没有包含所有标题。例如,我有以下函数调用:
IORegistryEntryGetParentEntry(service, kIOServicePlane, &parent);
出现了错误:
Invalid arguments 'Candidates are: ? IORegistryEntryGetParentEntry(?,?,?)'
现在,IOKit/IOKitLib.h
(我确实拥有)中定义的函数的正确签名是:
kern_return_t IORegistryEntryGetParentEntry(
io_registry_entry_t entry,
const io_name_t plane,
io_registry_entry_t *parent );
现在,如果我们采用第一个参数并跟踪类型定义,我们得到:
typedef io_object_t io_registry_entry_t; (in IOKit/IOTypes.h)
typedef mach_port_t io_object_t; (in IOKit/IOTypes.h)
typedef mach_port_name_t mach_port_t; (in mach/port.h)
typedef natural_t mach_port_name_t; (in mach/port.h)
然后!我没有定义__darwin_natural_t
的包含。这包括实际上在i386
,我在symlink目录中没有。添加它完成了链:
typedef __darwin_natural_t natural_t; (in i386/vm_types.h)
typedef unsigned int __darwin_natural_t; (in i386/_types.h)
最后,CODAN知道IORegistryEntryGetParentEntry()
应该是什么类型的参数1,并且错误更改为:
Invalid arguments 'Candidates are: kern_return_t IORegistryEntryGetParentEntry(io_registry_entry_t ,?,io_registry_entry_t*)'
我为其他参数重复了这个“类型跟踪”,发现错误消失了(我甚至不需要重建索引,而是YMMV)。当然,您需要找到所需的标题,并且可能确定包含 - 以上只是一个示例!
答案 4 :(得分:0)
我也遇到了一些功能相同的问题。事实证明,在几个typedef之后,参数是__int64,它没有被定义(不是标准的)。我只需要在我的项目中定义它,这就解决了问题。
项目 - >属性 - > C / C ++一般 - >路径和符号 - >符号 - > C ++源文件 - >添加
name:__ int64
值:长期
(或者代替“long long”也许您可以使用this answer中的一个值
编辑:
顺便说一句,我在Eclipse bugzilla中看到了关于这个问题的错误报告,所以未来可能不需要定义__int64