'printk' undeclared应该如何解决??

 #include <linux/kernel.h> 
#define __KERNEL__

。。。

void (*pFunc)(void *);
printk("pFunc:[%pf]\n",pFunc);           //KERN_EMERG 

加入了头文件和宏定义,编译时仍然出现printk' undeclared (first use this function)这样的报错

试了百度的各种方法都没用。。。
据说这个函数工作在内核态,我是傻傻分不清内核态的代码该是怎样的,用户态的代码又该是怎样的?还是它们从代码上根本就不会有区别,而只是在运行时有区别??

不知哪里出了问题,求大神们解救~~

或许你想用的是 printf ?

这是内核态的打印函数,在应用层使用printf,在内核态使用printk打印。printf是c库函数,头文件是#include
printk不能在用户态使用,用户态还是用printf

驱动和内核源码是内核态的