1.#message
用法:#message "message"
用途:当编译器编译到#message处会在编译输出栏中输出message消息,这时程序员可以知道编译器已经并且编译了该处,可以用来检查程序是否有编译了此处,或者在此设置一些消息告知程序员。
此条预编译指令相当于C中的#pragma message("消息文本") ,此预编译命令在Keil Compiler也可以支持,效果与#message
例如:
#ifdef DEBUG_ENABLE
#message "IN DEBUG MODE"//可以用来告知程序员程序处于DEBUG模式下
#endif
这样的message会在uVision的Output Window上显示,而无论有多少个message输出,编译输出栏都不会有warning或error。
2.#warning
用法:#warning "message"
用途:与#message类似,区别是当遇到这样的预编译命令会抛出一个警告,若有多个警告则编译输出栏中的warning个数累加。
3.#error
用法:#error "message"
用途:程序员会在source code中的重要部分加上这个预编译指令,因为编译到了这个地方程序可能会有问题而编译器却无法发现,这时这条预编译指令就产生了作用。碰到此指令会抛出一个错误,程序将无法通过编译。
以上三条指令用法类似,只是编译的时候抛出的warning级别不一样,程序员可以自己根据严重程度自己设置,三条指令显示的消息可以不用加双引号"",这三条预编译指令只在Keil Compiler上有效。
4.#ifndef/#define/#endif组合
作用:防止该头文件被重复引用。与#pragma once指令类似,但keil compiler不支持此指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次。
5.#ifndef name等同于#if !defined(name)
#ifndef name等同于#if !defined(name)