Eclipse给我无效的参数'候选者是:void*memset(void*,int,?)'虽然我知道args是好的

djc*_*535 25 eclipse memset

我在eclipse中得到了一个无效的参数错误,尽管我相信我的论点是好的.建议的参数包含'?' 我认为这可能表明问题,但我不知道如何解决它.

我尽力复制我在这里看到的例子:http:
//www.cplusplus.com/reference/clibrary/cstring/memset/

为了确定我正确的args.

#include <stdio.h>
#include <string.h>
void foo()
{
    char str[] = "why oh why does my IDE give me errors when I know my args are good?";
    memset(str, '-', 4);
    puts(str);
}
Run Code Online (Sandbox Code Playgroud)

Eclipse在memset行上给出了以下错误:

无效的参数'候选者是:void*memset(void*,int,?)'

可能是什么导致了这个?那是什么'?' 作为第3个arg?

提前致谢!

PS:刚刚注意到我在尝试使用malloc,calloc等操作时遇到了类似的错误.

Cat*_*kul 19

在Eclipse中:

  • 右键单击该项目
  • 单击属性
  • 通过单击箭头,在左侧树视图中展开" C/C++ general "项目(只需单击项目本身不会展开子选项)
  • 从子选项中选择" 预处理器包含路径,宏等 ".
  • 单击" 提供者 "选项卡
  • 选中" CDT GCC内置编译器设置[共享] "旁边的框.

编辑:

这样做的原因是有一堆默认包含并定义编译时编译器静默添加到场景后面.这些指令让eclipse获取这些默认的预处理器指令,以便它自己的索引器使用相同的设置


Ram*_*h-X 12

以下方法解决了我遇到的相同问题。(在日食 4.2 上)

  • 清理你的项目 ( Project-> Clean)
  • 重新索引文件 ( Project-> C/C++ Index-> Rebuild)
  • 重建您的项目 ( Project-> Build All)


Jon*_*ler 1

我认为这与您的 Eclipse 设置有关。

独立使用时,该片段在 Mac OS X 10.7.5 上的 GCC (G++) 4.7.1 下使用命令行进行编译:

g++ -O3 -g -Wall -Wextra -c ms.cpp
Run Code Online (Sandbox Code Playgroud)

关于第三个参数的唯一令人惊讶的事情memset()是它的类型是size_t,但标头应该声明这一点,所以它不应该是一个问题。

如果您使用et al,当然malloc()您将包括。<stdlib.h>还有空间争论您应该使用<cstdio>,<cstring><cstdlib>,但这不应阻止您提供的代码编译而不会出现错误。