Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:无效的类型参数‘-&燃气轮机’;(具有‘;int’;)_C++_C_Binutils - Fatal编程技术网

C++ 错误:无效的类型参数‘-&燃气轮机’;(具有‘;int’;)

C++ 错误:无效的类型参数‘-&燃气轮机’;(具有‘;int’;),c++,c,binutils,C++,C,Binutils,我正在尝试构建一个旧的binutils(2.13)。获取错误。/config/obj elf.c:364:错误:下一行的'->'(具有'int')的类型参数无效: if (symbol_get_obj (symbolP)->local) {... 功能符号_get_obj: OBJ_SYMFIELD_TYPE * symbol_get_obj (s) symbolS *s; { if (LOCAL_SYMBOL_CHECK (s)) s = local_symbol

我正在尝试构建一个旧的binutils(2.13)。获取错误。/config/obj elf.c:364:错误:下一行的'->'(具有'int')的类型参数无效:

if (symbol_get_obj (symbolP)->local)
{...
功能符号_get_obj:

OBJ_SYMFIELD_TYPE *
symbol_get_obj (s)
     symbolS *s;
{
  if (LOCAL_SYMBOL_CHECK (s))
    s = local_symbol_convert ((struct local_symbol *) s);
  return &s->sy_obj;
}
对象符号字段类型定义为:

#define OBJ_SYMFIELD_TYPE struct elf_obj_sy
而elf_obj_sy是

struct elf_obj_sy
{
  /* Whether the symbol has been marked as local.  */
  int local;

  /* Use this to keep track of .size expressions that involve
     differences that we can't compute yet.  */
  expressionS *size;

  /* The name specified by the .symver directive.  */
  char *versioned_name;

#ifdef ECOFF_DEBUGGING
  /* If we are generating ECOFF debugging information, we need some
     additional fields for each symbol.  */
  struct efdr *ecoff_file;
  struct localsym *ecoff_symbol;
  valueT ecoff_extern_size;
#endif
};

无法理解此代码的错误。。。有什么建议吗?

根据错误消息,一个可能的原因是函数
符号\u get\u obj
的声明没有出现在调用它的位置之前,这使得返回值默认为type
int
,对于操作符
->
来说,这是无效的类型。你可能想检查一下。通过头文件包含或显式函数原型,确保
symbol\u get\u obj
的声明正确存在

invalid type argument of ‘->’ (have ‘int’)
这只有在以下情况下才有意义

symbol_get_obj(symbolP)
返回
int
。但事实并非如此


因此,唯一合乎逻辑的结论是,
symbol\u get\u obj
未在代码中发生错误的位置声明。在这种情况下,编译器将假定它是一个返回类型为
int
的值的函数。这将解释错误信息。

您能告诉我您从哪里得到错误吗?在if行:if(symbol\u get\u obj(symbolP)->local)如果我在这个错误之前查看编译器警告1行,我可能会猜到:警告:函数“symbol\u get\u obj”的隐式声明。。。谢谢。