【问题标题】:Compilation error using eclipse使用eclipse编译错误
【发布时间】:2011-08-24 14:21:55
【问题描述】:

在下面的头文件中我声明了一些函数:

    #ifndef _MY_INT_FUNCTIONS_H_
    #define _MY_INT_FUNCTIONS_H_



    int intFcn (const void *key, size_t table_size);
    void intPrint (const void *key);
    int intCompare (const void *key1, const void *key2);


    #endif // _MY_INT_FUNCTIONS_H_

但我得到一个编译错误说:

“预期的声明说明符或‘size_t’之前的‘...’”

关于 int intFcn 函数。

我使用的是eclipse INDIGO版本。

帮助任何人?

【问题讨论】:

  • 我认为你应该包含 stdlib.h
  • 大多数 C 编译器发出的可怕且不恰当的错误消息的另一个示例。为什么编译器不直接说“无法识别的类型”?
  • @Blagovest Buyukliev :因为解析器的工作方式。解析器期望一些东西,但看到其他东西,所以它给出了一个错误说明。更好的错误消息通常意味着更复杂的解析器。鉴于 C++ 解析器已经相当复杂(由于 C++ 语法的性质),这是一项艰巨的任务。我同意有更好的错误消息会很有趣,但很难实现。

标签: c compiler-errors


【解决方案1】:

在 C++ 中,size_tstd 命名空间的 <cstddef> 标头中声明。

#include <cstddef>

int intFcn (const void *key, std::size_t table_size);

在 C(以及 C++)中,它在 &lt;stddef.h&gt; 中声明:

#include <stddef.h>

int intFcn (const void *key, size_t table_size);

【讨论】:

    【解决方案2】:

    对于size_t,您需要:

    #include <stddef.h>   // in C
    

    或:

    #include <cstddef>    // in C++
    

    【讨论】:

      猜你喜欢
      • 2013-06-01
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 2011-11-20
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多