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);
阅读(976) | 评论(0) | 转发(0) |