我有一个使用Android NDK的Android项目。
在文件 Application.mk 中,我使用名为 MYDIRECTIVE 的自定义指令:
APP_CFLAGS := -DMYDIRECTIVE=TEST
在.cpp文件中,我想测试它的值:
#ifdef MYDIRECTIVE
#if MYDIRECTIVE == 'TEST'
/* do some stuff */
#else
#error MYDIRECTIVE is unknown
#endif
#endif
问题是我得到 MYDIRECTIVE未知消息。
当我使用 V = 1 选项编译时,我在编译中看到指令:
-MYDIRECTIVE=TEST
我尝试使用'TEST'进行测试, TEST ,“TEST”,我仍然会收到错误。
任何帮助?
答案 0 :(得分:1)
您不能使用#if
指令来检查字符串是否相等。如上所述in the GCC documentation:
`#if'指令允许您测试算术的值 表达
无论如何,您不是使用==
来比较字符串,而是使用strcmp()
。并且预处理器无法使用strcmp()
。
也许您可能想要使用MYDIRECTIVETEST
代替:
#ifdef MYDIRECTIVETEST
/* do some stuff */
#else
#error MYDIRECTIVETEST is unknown
#endif