私の "C"コードはLinux(コンパイラggdb3、C99)でコンパイルされませんが、Visual Studioでうまく動作しますか?ここ エラーのメッセージ:コンパイラの違い。 C言語
20:1: error: control may reach end of non-void function [-Werror,-Wreturn-type] }
#include <stdio.h>
// Function to determine if one character string exists inside another string.
int findString(char source[], char searching[])
{
int i = 0, j = 0;
for (; source[i] != '\0'; i++) {
if (source[i] == searching[j])
if (source[i + 1] == searching[j + 1] &&
source[i + 2] == searching[j + 2])
return i;
else
return -1;
}
}
int main(void)
{
int index = findString("a chatterbox", "hat");
if (index == -1)
printf("No match are founded\n");
else
printf("Match are founded starting index is %i\n", index);
return 0;
}
私は機能にEDDにこれを試してみたが、それはあなたが括弧を使用する必要があるので、
if (source[0] == '\0')
return -1;
エラーメッセージが示すように、 'find'文の最後に' return'文を挿入するのを忘れてしまいました。また、Visual Studio C/C++コンパイラは、CコンパイラよりもC++コンパイラです。 – Xaver
は毎回「警告としてエラー」を使用します。それらの警告はirlエラーです。最初に無視すると、後で難しい方法で直面することになります。 – bansi
コンパイラはデフォルトでこのようなことに不満を持ちません。したがって、Visual Studioには特に驚くことではありません。 Linuxコンパイラは常にこのようなことを診断するわけではありませんが、この問題を拾い読みしてエラーとして扱うためのコマンドラインオプションが与えられているため、 "Linuxコンパイラ"には驚くことではありません。 Visual Studioのドキュメントを読んだら、同等のオプションまたはオプションのセットを見つけることができます。解決方法は、関数を通るすべての実行パスに 'return'ステートメントがあることを確認することです。 – Peter