Chinaunix首页 | 论坛 | 博客
  • 博客访问: 435119
  • 博文数量: 111
  • 博客积分: 4290
  • 博客等级: 上校
  • 技术积分: 1301
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 14:22
个人简介

努力工作,建立一个幸福的家庭。

文章分类

全部博文(111)

文章存档

2015年(4)

2013年(9)

2012年(6)

2011年(17)

2010年(69)

2009年(6)

分类: LINUX

2010-04-13 22:04:23

error:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘static’

曾经遇到这个问题,虽然这个贴子时间长了点,但估计还会有人遇到同样问题的。如果error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘XXX’,如果XXX是类名,那么几乎可以肯定地说是你的C文件里包含了C++头文件。楼主遇到的正是这个问题。建议不要使用10楼的方法。最好的方法 是,不要去包含c++头文件!如果你的C文件要用到类,干脆直接将C文件改成CPP文件得了。缺少标点符号和全半角的提示是不一样的。可以自己试一下就知 道了。

原文:
/*
*File Name :scull.c
*Function :test character device driver
*Author :dengwei
*From :<>
*Time :2010-4-13 Hunan University
*/
#include
#include
#include
#include
#include

#define SCULL_MAJOR 0             /*默认选择动态分配*/
#define SCULL_MINOR 0
#define SCULL_NR_DEVS 4           /*4个连续设备*/
#define DEVICE_NAME “scull”

MODULE_LICENSE("Dual BSD/GPL");

static dev_t dev;          /*用来保存设备编号*/
static int scull_major;
static int result;
static char __initdata info[] = “This is my first character device driver!Module initial!\n”;
static int __init scull_init(void)
{
        printk(info);
        if (SCULL_MAJOR) {
                 dev = MKDEV(SCULL_MAJOR, SCULL_MINOR);             /*将主设备号和次设备号转换成dev_t类型*/
                 result = register_chrdev_region(dev, SCULL_NR_DEVS, DEVICE_NAME);
        } else {
                 result = alloc_chrdev_region(&dev, SCULL_MINOR,SCULL_NR_DEVS,DEVICE_NAME);
                 scull_major = MAJOR(dev);
        }
        if (result < 0) {
                 printk(KERN_WARNING “scull: can’t get major %d\n”, scull_major);
                 return result;
        }else{
                 printk(KERN_ALERT”scull_major = %d\n”,scull_major);
                 return 0;
        }
}

static void __exit scull_exit(void)
{
        printk(KERN_ALERT ”Module exit\n”);
        unregister_chrdev_region(dev, SCULL_NR_DEVS);
}
module_init(scull_init);
module_exit(scull_exit);

阅读(940) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~