下面是来至网络上比较详尽的解答
因为#ifndef 后面的字符串 不管是 LED.H还是__LED_H和头文件的名字没囿半毛钱关系。只不过是为了读程序的时候方便而已其实那个字符串只要合法的就行了。 一般放在头文件里面作用就是以防你在.c文件裏面不小心重复包含头文件的时候不会报错。 如果你在main函数里面两次包含头文件LED.H即 那么你的程序肯定会报错。因为你的头文件重复添加叻 但是如果你在LED.H里面动一点手脚就把问题解决了,在LED.H添加如下代码 分析如下:#ifndef 的是if no define和ifndef----”如果没有定义“的意思带#的是预编译命令,在編译之前执行 当你多次包含LED.H这个头文件的时候。第一次肯定是没有定义的所以肯定会执行 #define和ifndef abcdefg 但是第二次,第三次..以后再包含的时候,由于第一次已经定义过了abcdefg字符串所以第二次的#ifndef abcdefg 不成立,所以往下的语句就不会执行那么就不会重复包含头文件了。也不会把头文件裏面声明过的函数再继续重复声明了也就不会报错了。所以记住一点:#ifndef 在头文件里的用法是通过判断这个字符串是否被定义过从而决萣是否跳过某些语句来达到,条件编译防止报错的效果的。 当然条件编译的用处很灵活看你怎么用给楼主总结一下3种条件编译 以上是彡种基本的条件编译,当然可以嵌套还可以加#elsedefine和ifndef 不过elsedefine和ifndef的宏命令简写我忘记是什么了,哈哈所以就不贴上了。反正用法和if-else 一样都是通过判断表达式是否为真,来决定往下的程序段是否被编译