预处理器宏D__KERNEL__和__KERNEL__之间的区别。

问题描述 投票:0回答:1

在linux内核编程方面,我是一个绝对的初学者,如果问题太初级,请见谅。

在这里,我的问题是 https:/www.oreilly.comlibraryviewlinux-device-drivers0596000081ch02s02.html 我找到了下面的例子。

# 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).

linux-kernel macros kernel-module
1个回答
0
投票

-D 是一个 选项的编译器 或预处理器),告诉它定义一个宏。 所以把 -D__KERNEL__ 在编译器命令行中,与把 #define __KERNEL__ 在文件的顶部。 同样地, -DFOO 将定义一个名为 FOO.

没有命名的宏 D__KERNEL__ 这里的任何地方都被定义为。

© www.soinside.com 2019 - 2024. All rights reserved.