#if define (abc)与#ifdef abc 有什么区别?

2024-12-19 19:46:30
推荐回答(2个)
回答1:

#if define (abc)与#ifdef abc 这两个预编译语句基本上是一样的,只不过前者支持布尔运算如&&, ||,可以对多个预编译变量进行检查,因而应用比后者更灵活一些。如:
#if (!defined(_DEBUG) && defined(USE_MYLIB))
..........
#endif

回答2:

基本一样的,前者的应用更灵活,至少它支持布尔操作比如&&,||,是吧?

你可以参考一下:

谁知道#ifndef 和#if !define 的区别?
如果没有区别的话,应该怎么用?
---------------------------------------------------------------

基本上一样,不过后者的应用范围更大,可以支持多个预编译变量的检查:
#if (!defined(_DEBUG) && defined(USE_MYLIB))
..........
#endif

这种情况用前一种方式就只能写一个嵌套的条件判断:
#ifndef _DEBUG
#ifdef USE_MYLIB
................
#endif
#endif