【问题标题】:Why does this static funtion have three prefixes?为什么这个静态函数有三个前缀?
【发布时间】:2015-06-11 18:27:28
【问题描述】:

我正在尝试为我的 SD 卡构建驱动程序,但我在此行收到错误:

static void __devexit rtsx_remove(struct pci_dev *pci)

说:

/home/kenkron/Downloads/rts_pstor/rtsx.c:916:22: 错误:在 'rtsx_probe' 之前需要 '=',',',';', 'asm' 或 '__attribute__' static int __devinit rtsx_probe (struct pci_dev *pci, const struct pci_device_id *pci_id)

为什么__devexit 在函数名之前,它应该如何工作?

编辑:我的问题是关于函数定义上下文中的 __devexit 是什么。 Eugene Sh 可能暗示它是一个宏,但它在函数定义中会做什么?我见过的其他函数最多只有静态和返回类型。

【问题讨论】:

  • 你确定你没有忘记分号吗?在上一行?
  • 嗯?错误大约是rtsx_probe。你引用的那一行声明了rtsx_remove。您引用了完全不相关的行。
  • @AnT 带有一些未定义内容的宏扩展可能会让编译器对实际错误位置感到困惑
  • 关于双下划线开头的名字见link
  • @rahultyagi 这不是一个变量。

标签: c function static driver


【解决方案1】:

__devexitinclude/linux.h 中定义。确保包含该标题。如果您已经这样做了,请确保您的代码中没有任何语法错误。还要检查前几行是否有错误,例如。缺少分号。

【讨论】:

    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 2021-07-25
    • 2013-08-18
    • 2017-10-19
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多