【发布时间】:2013-04-07 08:12:19
【问题描述】:
我在 Linux 上编译它时收到 format not a string literal and no format arguments 警告。 snprintf 为第三个参数显示 const char*。定义const char *INTERFACE = "wlan0"然后将其传递给函数有什么问题?
#include <stdio.h>
#include <net/if.h>
#include <string.h>
int main(int argc,char *argv[]){
const char *INTERFACE = "wlan0";
struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), INTERFACE);
return 0;
}
【问题讨论】:
-
我没有收到任何警告:ideone.com/BdSQF2 似乎没问题
-
它是
const char *format,看起来像“%s” -
你有什么版本的 GCC? (只需运行
gcc -v即可了解)。 -
我猜你的 GCC 可能早于 4.7;那么升级你的编译器可能是值得的......(例如到 GCC 4.8)。
-
是
gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1),谢谢提示