在我的程序中,我正在使用atoi()函数从argv中提取int。当我使用
#include <stdlib.h>
我收到以下错误:
cachesim.c:20: warning: passing argument 1 of ‘atoi’ from incompatible pointer type
但是,如果我不包含stdlib.h,我根本没有收到错误,我的代码正常运行。这是为什么?
#include <stdlib.h>
#include <stdio.h>
main(int argc,int ** argv){
if(argc == 0){ int blk = 32; int i; for (i = 1; i < argc; i++){ if (strcmp(argv[i], "-b") == 0){ if (i + 1 <= argc - 1) blk = atoi(argv[i+1]); } } } }
答案 0 :(得分:3)
变化:
main(int argc, int **argv){
到
int main(int argc, char *argv[]){
您之前的声明不是main
的可接受声明,atoi
需要char *
类型的参数。
答案 1 :(得分:0)
argv应该是一个字符数组,你必须读取字符,然后将它们转换为int。
另外,是什么:
if(argc == 0)
如果你没有参数?这应该永远不可能,因为程序名称作为参数传递。
请参阅:
What does int argc, char *argv[] mean?
你也没有在正确的范围内声明int blk,当你离开if(argc == 0)语句时,变量blk将会消失。