我的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的原型? –