Android NDK测试指令值

时间:2013-02-21 15:06:21

标签: android android-ndk preprocessor directive

我有一个使用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”,我仍然会收到错误。

任何帮助?

1 个答案:

答案 0 :(得分:1)

您不能使用#if指令来检查字符串是否相等。如上所述in the GCC documentation

  

`#if'指令允许您测试算术的值   表达

无论如何,您不是使用==来比较字符串,而是使用strcmp()。并且预处理器无法使用strcmp()

也许您可能想要使用MYDIRECTIVETEST代替:

#ifdef MYDIRECTIVETEST
/* do some stuff */
#else
#error MYDIRECTIVETEST is unknown
#endif