【问题标题】:Compilation error expected [duplicate]预期编译错误[重复]
【发布时间】:2013-11-24 16:16:36
【问题描述】:

我在设备驱动程序编程中遇到了如下声明:

static int __init sum_init(void)

我见过static int sum_init(void)。为什么上面的声明没有给出编译错误?

【问题讨论】:

标签: c linux-device-driver


【解决方案1】:

因为__init 可能是某种#define,它被分配给不会导致编译错误的任何东西。

#define __init

或者……

#define __init __section(.init.text) __cold notrace

【讨论】:

  • 这通常是不正确的(在 linux 设备驱动程序的上下文中)
  • 澄清 :) 我没有意识到海报是在谈论 Linux 驱动程序。无论如何, __init 只是一个可以扩展为空的宏,或者扩展为无害的东西。困惑似乎是发帖者不熟悉函数声明的 GCC 扩展。
【解决方案2】:

就像说:

静态 int __init sum_init()

{

    return 0;

}

它不返回任何值,因此没有发生错误。

【讨论】:

  • 但是你的函数确实返回了一个值:0,而且它确实必须返回一个值,因为它被声明为返回一个 int。
  • 不,不是。 (而且我认为您错过了实际问题,可能是因为一开始就不太清楚)
猜你喜欢
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 2020-09-04
相关资源
最近更新 更多