我已经 在#ifndef ABC
同#if !defined (ABC)
一个 C 源文件中看到过。
它们之间有细微的区别吗?(如果是风格问题,为什么有人会在同一个文件中使用它们)
我已经 在#ifndef ABC
同#if !defined (ABC)
一个 C 源文件中看到过。
它们之间有细微的区别吗?(如果是风格问题,为什么有人会在同一个文件中使用它们)
不,以这种方式使用两者之间没有区别。当初始条件或后续条件之一需要更复杂的测试时,后一种形式(使用defined()
)很有用。仍然可以工作,但在这种情况下使用可能会更清楚。例如,如果它需要测试是否定义了多个宏,或者它是否等于特定值。#if
#elif
#ifdef
#if defined()
如上所述,差异(在文件中同时使用)可能取决于使用中的特定细微差别,或者只是由于不一致而导致的不良实践。
在您给出的上下文中,它们是相同的:您只是在检查一个宏标识符的存在。
但是,#if 表单允许您评估表达式,这很有用。