[解決済み】警告:制御が非ボイド関数の終わりに達する [-Wreturn-type].
2022-01-02 06:06:41
質問
機能に関して少し疑問があります。私が使っていないせいだと思うのですが。私のコードは以下の通りです。
/*date difference calculator*/
#include <stdio.h>
int main()
{
int Date1 = 0, Date2 = 0, Dif, F, L, D1, D2, M1, M2, Y1, Y2;
int x[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int y[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
char A1, A2, B1, B2;
/*input first date*/
fprintf (stderr , "Enter first date,in the form <day>/<month>/<year> or <day>-<month>-<year>.\nWhere <day>,<month> and <year> are integers:\n");
(scanf("%i%c%i%c%i", &D1, &A1, &M1, &B1, &Y1));
/*check first date*/
if (!(Y1 % 4)) x[2]=29;
while ((Y1 < 1 || (Y1 > 9999)) || (M1 < 1 || M1 > 12) || (D1 < 1 || D1 > x[M1]) || (A1 != B1) || ((A1 != '/') && (A1 != '-')))
{
fprintf (stderr, "Incorrect format, re-enter date:\n");
scanf("%i%c%i%c%i", &D1, &A1, &M1, &B1, &Y1);
if (!(Y1 % 4)) x[2]=29;
}
/*print first date*/
fprintf (stderr, "First date = %i%c%i%c%i\n", D1 , A1 , M1 , B1 , Y1);
/*input second date*/
fprintf (stderr , "Enter second date,in the form <day>/<month>/<year> or <day>-<month>-<year>.\nWhere <day>,<month> and <year> are integers:\n");
(scanf("%i%c%i%c%i", &D2, &A2, &M2, &B2, &Y2));
/*check second date*/
if (!(Y2 % 4)) y[2]=29;
while ((Y2 < 1 || (Y2 > 9999)) || (M2 < 1 || M2 > 12) || (D2 < 1 || D2 > y[M2]) || (A2 != B2) || ((A2 != '/') && (A2 != '-')))
{
fprintf (stderr, "Incorrect format, re-enter date:\n");
scanf("%i%c%i%c%i", &D2, &A2, &M2, &B2, &Y2);
if (!(Y2 % 4)) y[2]=29;
}
/*print second date*/
fprintf (stderr, "Second date = %i%c%i%c%i\n", D2 , A2 , M2 , B2 , Y2);
/*convert first date into days*/
for (F = 1; Y1 > F ; F++)
{
if (F % 4 == 0) (Date1 = Date1 + 366);
else (Date1 = Date1 + 365);
}
for (L = 1; M1 > L ; L++)
Date1 = Date1 + x[L];
Date1 = Date1 + D1;
/*convert second date into days*/
for (F = 1; Y2 > F ; F++)
{
if (F % 4 == 0) (Date2 = Date2 + 366);
else (Date2 = Date2 + 365);
}
for (L = 1; M2 > L ; L++)
Date2 = Date2 + y[L];
Date2 = Date2 + D2;
/*standard output*/
Dif = Date2 - Date1;
printf("\n%i\n\n" , Dif);
/*text output*/
if (Date2 > Date1)
{Dif = Date2 - Date1;
fprintf (stderr , "Indicating that the first date is %i days before second date.\n" , Dif);}
if (Date1 > Date2)
{Dif = Date1 - Date2;
fprintf (stderr , "Indicating that the second date is %i days before first date.\n" , Dif);}
if (Date1 == Date2)
fprintf (stderr , "Indicating that the first date is equal to second date.\n");
}
これを用いてコンパイルする場合。
gcc -Wall -ansi date1.c -o date1
このような現象が発生します。
date1.c: In function ‘main’:
date1.c:70:1: warning: control reaches end of non-void function [-Wreturn-type]
それとも、関数を使うようにプログラムを書かなければならないのでしょうか?コンパイルは決められた仕様に従わなければならないので、コンパイル方法を変更することはできません。
質問の形式が悪くて申し訳ないのですが、初めてここに来たので、一人でできるようになりたいと思っていました。
誰か助けてくれるといいんだけどな〜。
解決方法は?
必要なのは
return
をある時点でmain関数から削除してください。エラーメッセージによると、この関数は値を返すように定義されていますが、あなたは何も返していません。
/* .... */
if (Date1 == Date2)
fprintf (stderr , "Indicating that the first date is equal to second date.\n");
return 0;
}
関連
-
CE5.2版を使って、武術のベースサイトである第一レベルのメソッドを見つける(グラフィックチュートリアル)。
-
複数のサイトをまとめてよく見たい オススメ度
-
[解決済み】C++ -- ' の前に一次式があることが予想される。
-
[解決済み】Jupyter Notebookが保存されない:postに'_xsrf'引数がない
-
[解決済み】gitが「変更をコミットするか、マージする前に隠してください」と言うのを解決するにはどうしたらいいですか?
-
[解決済み】GAEで完全に有効なXMLをパースすると「Prologではコンテンツが許可されません」と表示される
-
[解決済み】C++の<map>に相当するC#は何ですか?[重複しています]
-
[解決済み】 c++ "Incomplete type not allowed" クラス参照情報へのアクセスエラー (前方宣言による円環状依存性)
-
[解決済み】ポインタと整数の比較を警告する
-
[解決済み】ログアウトと再ログインをせずに.bashrcの設定を再読み込みする方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
linux シェル学習ノート 5日目
-
複数のサイトをまとめてよく見たい オススメ度
-
パスワード入力を非表示にする InstallShield スクリプト
-
[解決済み】R on MacOS Error: vector memory exhausted (limit reached?)
-
[解決済み】R: predict() で数値 'envir' 引数が長さ1でない。)
-
[解決済み】ValueError: shape mismatch: オブジェクトを1つの形状にブロードキャストできない
-
[解決済み】gitが「Pull is not possible because you have unmerged files」と言うのはなぜですか?
-
[解決済み】Nullableオブジェクトは値を持たなければならない?
-
[解決済み】ggplot2使用時の永続的な無効なグラフィックス状態エラー
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException: 行が見つかりません [重複]。