【发布时间】:2013-05-16 04:00:10
【问题描述】:
我正在尝试将 optarg 值分配给 int,但编译器给了我以下警告:
warning: assignment makes integer from pointer without a cast [enabled by default]
我已经尝试在分配之前将 optarg 强制转换为 int
n = (int) optarg;
但仍然收到警告:
warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
我不确定需要做什么才能简单地将 optarg 分配给一个整数,然后打印它(现在)。
int main (int argc, char *argv[])
{
char c;
int n;
while ((c = getopt(argc, argv, "m:")) != -1) {
switch (c) {
case 'm':
n = optarg;
break;
}
}
printf("%d\n", n);
return 0;
}
【问题讨论】:
-
这是 64 位 Linux 吗?如果是这样,将 int 更改为 long
-
@Mellowcandle:不一定。或许作者知道
n是一个很小的整数…… -
对初学者特别有用的提示:使用
gcc -Wall -g编译并改进您的程序,直到没有给出警告。然后学习如何使用gdb调试器。