首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预处理程序宏D__KERNEL__和__KERNEL__之间的差异

预处理程序宏D__KERNEL__和__KERNEL__之间的差异
EN

Stack Overflow用户
提问于 2020-05-07 07:35:37
回答 1查看 148关注 0票数 0

我在linux内核编程方面是一个绝对的初学者,所以如果问题是初级的,很抱歉。

在这里https://www.oreilly.com/library/view/linux-device-drivers/0596000081/ch02s02.html我找到了下面的例子:

代码语言:javascript
复制
# Change it here or specify it on the "make" command line

KERNELDIR = /usr/src/linux

include $(KERNELDIR)/.config
CFLAGS = -D__KERNEL__ -DMODULE -I$(KERNELDIR)/include \ -O -Wall


ifdef CONFIG_SMP
CFLAGS += -D__SMP__ -DSMP
endif

all: skull.o

skull.o: skull_init.o skull_clean.o
$(LD) -r $^ -o $@

clean:
rm -f *.o *~ core

我的问题很简单,预处理器宏__KERNEL__和使用的-D__KERNEL__之间有什么区别?尤其是这里的"-D“是什么意思?(顺便说一句,MODULE-DMODULE的情况也是如此)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-07 08:13:23

-D是一个option to the compiler (或预处理器),告诉它定义一个宏。因此,将-D__KERNEL__放在编译器命令行中与将#define __KERNEL__放在文件的顶部完全相同。同样,-DFOO将定义一个名为FOO的宏。

这里没有定义名为D__KERNEL__的宏。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61647299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档