2013-07-26 106 views
1

我正在使用Android NDK构建C库,该库链接到另一个团队提供的一些静态库。如果我调用其中一个库中定义的函数,但未由我的任何导入的头文件声明,则不会收到编译器的错误或警告。它看起来像编译器假定我传入的参数是正确的类型。我不喜欢这样,因为我可能会错误地调用函数而不知道它。Android NDK:调用未声明的函数时没有错误或警告

例如,如果静态库包含像函数“空隙MYFUNC(INT一个,字符* B);”,那么我期待以下每个,以产生一个错误:

  • MYFUNC() ;
  • MyFunc(1,2);
  • MyFunc(1,'2',3);

如果我包含函数的声明,那么编译器会强制参数的数量和类型是正确的。

有没有办法告诉NDK编译器在对未声明函数进行调用时显示错误或警告?

+0

好的,我明白了。在Android.mk中,向LOCAL_CFLAGS变量添加“-Wimplicit-function-declaration”或“-Werror-implicit-function-declaration”。 – jason44107

+1

通常只需抛出'-Wall',其中包括C的“-Wimplicit-function-declaration”(以及其他大约28个)。这实际上并不是“全部”警告,只是通常有用的警告。 – fadden

回答

0

在Android.mk中,将-Wimplicit-function-declaration-Werror-implicit-function-declaration添加到LOCAL_CFLAGS变量。或者添加-Wall;这也很好。 (谢谢,fadden!)