我在C中有一个变量参数函数,看起来大致如下:
void log(const char * format, ...) {
va_list args;
va_start(args, format);
vfprintf( stderr, format, args );
va_end(args);
exit(1);
}
我可以这样通过callilng崩溃我的应用程序,
log("%s %d", 1);
因为函数缺少一个参数.有没有办法确定运行时缺少参数?
不,没有.但是当你使用gcc编译代码时,你应该添加选项-Wall -Wextra -Wformat -Os.这将启用许多警告,当您使用__attribute__(__printf__, 2, 3)或类似的东西注释您的功能时(我不记得确切的语法),应该出现针对您的情况的警告.
有关确切的语法,请参阅http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html.真的__atttribute__((__format__(__printf__, 1, 2))).
| 归档时间: |
|
| 查看次数: |
360 次 |
| 最近记录: |