簡潔にするために、この無駄なコードを取ってください。 argc_test.c:5:14:エラー:ポインタと整数の比較( 'char **'と 'int')[-Werror ]もし(!のargc = 4)"argv"と "argv"が間違っていると、char **とint - なぜ?
コード:。私は、エラーが5行目(代わりに "のargc" の "agrc" 変数を宣言する上でタイプミスによって引き起こされていることを知っている
#include <stdio.h>
#include <stdlib.h>
int main(int agrc, char *argv[]){
if (argc != 4){
fprintf(stderr, "Incorrect usage.");
}
}
何Iなぜ宣言していなくても、argcがchar **であることを意味しますか?
That wasn 't彼は私が得たエラーメッセージだけ、それは目立つものです。ここでは、完全なコマンドライン出力だ:打ち鳴らすエラー
argc_test.c:5:9: error: use of undeclared identifier 'argc'; did you mean 'argv'?
そして、あなたは4
へargv
を比較する場合はもちろん、あなたが比較しているに遭遇したとき
~/workspace/week_4/pset_4/resize/ $ make argc_test
clang -fsanitize=integer -fsanitize=undefined -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wshadow argc_test.c -lcrypt -lcs50 -lm -o argc_test
argc_test.c:5:9: error: use of undeclared identifier 'argc'; did you mean 'argv'?
if (argc != 4){
^~~~
argv
argc_test.c:4:26: note: 'argv' declared here
int main(int agrc, char *argv[]){
^
argc_test.c:5:14: error: comparison between pointer and integer ('char **' and 'int') [-Werror]
if (argc != 4){
~~~~^~
argc_test.c:4:14: error: unused parameter 'agrc' [-Werror,-Wunused-parameter]
int main(int agrc, char *argv[]){
^
3 errors generated.
make: *** [argc_test] Error 1
最初のエラーのみが重要です。他のメッセージは、コンパイラがいくつかの無効な推測を行い、最初のエラーを過ぎて移動しようとするので、偽のメッセージです。 –
「argv」を意味するかどうかを質問すると、その意味を仮定しています。エラーが発生しましたか? Googleがタイプミスを再解釈し、何か他のものを意味すると仮定した場合の検索結果を提供する場合と同様ですか? –