如果使用这两种方式没有区别。当初始的#if或后续的#elif条件需要进行更复杂的测试时,后一种形式(使用defined())是有用的。在这种情况下,#ifdef仍然有效,但使用#if defined()可能会更清晰。例如,如果它需要测试是否定义了多个宏,或者它是否等于特定值。 在同一个文件中使用这两种方式的差异可能取决于使用中的特定微妙之处,如上所述,或者只是糟糕的实践,因为不一致。