在Visual Studio 2015中,#define USE_SQLDB
指令並沒有達到我的預期。
我有一個最小的例子來說明這個問題#define USE_SQLDB(defined(USE_SQLITE)|| defined(USE_MYSQL))
#include "stdafx.h"
#define USE_SQLITE
//#define USE_MYSQL
#define USE_SQLDB (defined(USE_SQLITE) || defined(USE_MYSQL))
int main()
{
#if defined(USE_SQLITE)
puts("SQLITE"); // OK
#endif
#if defined(USE_MYSQL)
puts("MYSQL"); // Grayed out - OK
#endif
// Should expand to defined(USE_SQLITE) || defined(USE_MYSQL)
#if USE_SQLDB
puts("SQLITE or MYSQL"); // Grayed out - NOT OK
#endif
#if defined(USE_SQLITE) || defined(USE_MYSQL)
puts("SQLITE or MYSQL"); // OK
#endif
return 0;
}
我希望USE_SQLDB
是真實的,但事實並非如此。
這裏有什麼問題?