我的c技能非常生疏,所以我很抱歉如果这是一个愚蠢的问题,但我甚至不能想到要寻找这个简单问题的答案。 此代码编译没有任何警告:在传递char * argv []和声明char * argv之间有什么不同?
#include <ruby.h>
int run_script(int argc, char *argv[]) {
ruby_sysinit(&argc, &argv);
}
但是,当我编译这段代码,我得到以下警告:
#include <ruby.h>
int run_script(char * parameters) {
int argc=0;
char *argv[1];
ruby_sysinit(&argc, &argv);
}
run_script_3.c: In function 'run_script':
run_script_3.c:7: warning: passing argument 2 of 'ruby_sysinit' from incompatible pointer type
好像我传递相同的指针类型在这两种情况下。
只需确认:两种情况下的编译选项(警告级别等)相同? –
是完全相同的命令行选项,只是不同的文件内容 – nPn
什么是ruby_sysinit的原型? –