プログラムをコンパイルした際に
エラーと警告がありますよね?
そこで、警告というので
「関数に戻り値の方が指定されていません。」
というのが出現して、
「void型とみなします。」
というのが出てきて、
一応作業は進められます。
でも本当にそれでいいのか心配です。
大丈夫でしょうか?
それをそうやって修正したらよいでしょうか?

手持ちのテキストには
エラーのときの対処法などが書いてないので
何かよいHPか本とかないでしょうか?
あったら教えてください。
お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

他の方の説明で充分なので、補足程度に。



int Func();
関数が上の場合と仮定して、その関数の記述の中に、
int Func(){
int a;
何らかの処理
return a;
}
その戻り値の型の変数を宣言し、その関数の最後らへんに
return a;
とすると値を返すので、エラーはなくなると思います。
ちなみにメインの関数の中で、
 (int型の変数)= Func();
とするとその変数にaの値を入れることが出来ます。
もうひとつ付け足すとif文の中で
if( Func() >= 3)
などとして、関数の実行とその得られた値の比較を同時に出来ます。
これは行数も節約できるので、結構使えます。
    • good
    • 0

関数から戻ったあと戻り値を使わないのなら、警告は無視してかまいません。


もし使うのなら、しかるべき型を指定して下さい。指定の仕方は他の方が書かれています。
    • good
    • 0

C言語学習塾


http://www.orchid.co.jp/computer/cschool/cschool …

C言語ばばな塾
http://www.bekkoame.ne.jp/~medaka/r_c/c_class.html

アルゴリズム入門
http://www.geocities.co.jp/SiliconValley-Oakland …

C/C++リンク集
http://www.cs.kyoto-su.ac.jp/~minaken/Link/Gengo …

WinAPIプログラミング(後で必要になると思います)
http://www.os.xaxon.ne.jp/~bunyan/program/sdk/pr …

晃くんのプログラミング入門
http://www.owari.ne.jp/~gguy/

講座を中心に紹介しました。
    • good
    • 0

 こんにちは、honiyonです。



 読んで字の如くです。 戻り値の型を指定していますか?
 戻り値の型が分からないので、とりあえず void型を戻り値とするよ、という意味です。
 その警告を消すには、明示的に戻り値の型を指定してください。

 詳しくは、関数の宣言の仕方を調べれば載っています。

 参考URLに、Visual C++のメーリングリストのURLを載せておきます。
 ここで記事を検索すれば、大体の事は分かるでしょう。
 他にも Visual C++を話題とするMLはたくさんあると思います。

 参考になれば幸いです(..

参考URL:http://www.freeml.com/ml_mess.php?ml=vcpp_progra …
    • good
    • 0

関数にも引数・戻り値の「型」をしてする必要があります。


つまりは、

int hogehoge(int a, int b)
{
 ・・・・
}
のような記述になります。

また、戻り値が無ければ、「void」型となりますので、
void hogehoge(int a, int b)
のように定義する必要があります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qc型肝炎はHしたらうつるのでしょうか?

今c型肝炎がテレビのニュースとかに出てるのですけど血液感染以外にエイズみたいにHしたら相手にうつるのでしょうか?
まったく知識がないので教えていただけませんか?
 

Aベストアンサー

C型肝炎が性行為で感染する確率は低いとされています。
しかし、血液感染するものですから、コンドームの使用をお勧めします。
性交渉の際、目には見えないような細かな傷が多数できるのです。そういった傷からの血液感染という可能性を否定することができませんから。
以上kawakawaでした

Qint main()、void main()、void main(void)、int main(void)

今日、大学でC言語の講義の時間、先生が、

#include <stdio.h>

void main(void){

}

と宣言してプログラムを書くと教えていました。
main関数には、
main()
void main()
void main( void )
int main()
int main( void )

と、人によりいくつかの描き方があったりします。
どれが本当は正しいのでしょうか?
void mainはすべきではないとなんかの本で読んだのですが・・。

Aベストアンサー

通称C89という以前の言語規格(現行コンパイラの多くが準拠)では、下記のいずれかが正しい。
int main(int argc, char *argv[])
int main(void)

但し、最新のC言語規格(通称C99)では、
<ISO/IEC9899:1999>
or in some other implementation-defined manner.
</ISO/IEC9899:1999>
となっているので、処理系が戻り値のvoidを認めていればvoidも可。
# 組込み系などで戻り値を使わない環境もあるためでしょうか。

なので、コンパイラのマニュアルで戻り値のvoidにしていい/しろと書いてない限り、
voidは言語仕様的には正しくない。(でも動くものもある)

QB型肝炎のキャリアです。うつる??

19歳、遺伝性のB型肝炎のキャリアです。Hするときは相手の方にうつりますか??付き合って2ヶ月の彼氏がいて、きっとバレンタインに初Hすると思います。処女なので、出血するかもなんですが、その血で感染。。。なんてことはないですか?コンドームは絶対に使うつもりですが、心配です・・・。

Aベストアンサー

同じくキャリアです
Hしましたが、
ナニも起こりませんでした
相手の体の都合にもよるのでは?
感染の可能性はありますが、抗体を持つことが出来る
体質であれば何も問題は起きないものです
でも一応相手の了解は取ったほうがいいかと・・・

Qvoid main(void){...}だとDosWindowが開くので

わざわざWindowsアプリにして以下のようにするしかないのでしょうか?

LONG WINAPI WinProcedure(HWND hW,UINT wM,UINT wP,LONG lP)
{
//ここに宣言を置く
switch(wM)
{
case WM_CREATE:
//ここに処理を置く
return 0;
default:
return(DefWindowProc(hW,wM,wP,lP));
}
}
WINAPI WinMain(HINSTANCE hI,HINSTANCE,LPSTR,int nCS)
{
WNDCLASSwc;
HWNDhW,hPW;
MSGms;

wc.lpszClassName="goo";
wc.lpfnWndProc=(WNDPROC)WinProcedure;
wc.hInstance=hI;
wc.style=CS_HREDRAW|CS_VREDRAW;
wc.cbClsExtra=NULL;
wc.cbWndExtra=NULL;
wc.hIcon=LoadIcon(NULL,IDI_EXCLAMATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName=NULL;
RegisterClass(&wc);
hW=CreateWindow
(
"goo",
"教えて!goo",
WS_OVERLAPPED,
0,
0,
640,
456,
NULL,
NULL,
hI,
NULL
);
ShowWindow(hW,nCS);
UpdateWindow(hW);
while(GetMessage(&ms,NULL,NULL,NULL))
{
TranslateMessage(&ms);
DispatchMessage(&ms);
}
return (ms.wParam);
}

もっと簡単にDosWindowが開かないようにする方法はないのでしょうか?
もしないとすると上記記述でもっと簡単にできないでしょうか?

わざわざWindowsアプリにして以下のようにするしかないのでしょうか?

LONG WINAPI WinProcedure(HWND hW,UINT wM,UINT wP,LONG lP)
{
//ここに宣言を置く
switch(wM)
{
case WM_CREATE:
//ここに処理を置く
return 0;
default:
return(DefWindowProc(hW,wM,wP,lP));
}
}
WINAPI WinMain(HINSTANCE hI,HINSTANCE,LPSTR,int nCS)
{
WNDCLASSwc;
HWNDhW,hPW;
MSGms;

wc.lpszClassName="goo";
wc.lpfnWndProc=(WNDPROC)WinProcedure;
wc.hInstance=hI;
wc.style=CS_HREDRAW|CS_VREDRAW;
wc...続きを読む

Aベストアンサー

ウィンドウを開く必要がないなら、mainをWinMainに変更するだけで良いのでは? ウィンドウクラス登録、ウィンドウ作成、メッセージループ、ウィンドウプロシージャは全て不要な気がしますが。

WINAPI WinMain(HINSTANCE hI,HINSTANCE,LPSTR,int nCS)
{
  //処理内容

  return 0;
}

QC型肝炎は尿でもうつるの?

身内にC型肝炎の患者がいるのですが、
便座についていたその患者の尿に気づかず
その上に座ってしまいました。血液で感染することは
知っているのですが、尿でも感染するのかと
気になっています。どうか、教えてください。

Aベストアンサー

気になるのなら調べましょうよ
C型は基本的に血液感染です むかーーーしは輸血とかってのが多かったですけどね こっちに関しては今は無いです
今あるのは麻薬とかの針の使いまわしですかね。
性行為感染とか母子感染とかもなくは無いですがほぼないと思ってください。

つまりその尿が血尿とかで今すぐでた物であり あなたの体内に入り直接粘膜に触れなければ感染しません。
便座についていた程度であれば感染確率は0です

Q戻り値を返す関数の前に(void)を付ける

今日会社で

変数 = (void)戻り値のある関数
#具体的な例としては下記一例を参照

と、ソースで書かれているものがあったのですが、
コメント等では、

「戻り値を明示しないときに(void)を付けて使用する」

と、書いてあります。
戻り値のある関数の前で(void)を付けると、戻り値が明示されなくなるのでしょうか??
または、このような動作にはならないのでしょうか。

自分自身、ソースの内容をうる覚えになっておりますので、
確認をしながらアップしていきたいと思いますので、
宜しくお願い致します。

/*一例*/

・num1とnum2を足した値を返す
int PlusPoint(int num1 , num2);

・PlusPointの値を格納する
int Sum

◇ソース◆

#include <stdio.h>
#include "Plus.h"
int main(void)
{
int Sum;

Sum = (void)PlusPoint;
if(Sum == 2)
{
printf("false");
exit(0);
}
printf("true");
return 0;
}
*PlusPoint関数は外部で定義されている
*プロトタイプ宣言はPlus.hに定義されいるものとする

今日会社で

変数 = (void)戻り値のある関数
#具体的な例としては下記一例を参照

と、ソースで書かれているものがあったのですが、
コメント等では、

「戻り値を明示しないときに(void)を付けて使用する」

と、書いてあります。
戻り値のある関数の前で(void)を付けると、戻り値が明示されなくなるのでしょうか??
または、このような動作にはならないのでしょうか。

自分自身、ソースの内容をうる覚えになっておりますので、
確認をしながらアップしていきたいと思いますので、
宜しくお願...続きを読む

Aベストアンサー

「戻り値を明示しないときに(void)を付けて使用する」

昨今では、あまり流行のスタイルではないと思いますが、
こういうコーディング規約の文化は、実際にありました。
lint(ソースのチェックツール)等で、(void)にキャストしていないと警告をあげるものもありました。
「冗長な記述」と見る向きも、「表明的な記述」と見る向きもあります。

> 戻り値のある関数の前で(void)を付けると、戻り値が明示されなくなるのでしょうか??

動作的には、戻り値を(void)にキャストしてるのですね。
だから「明示的に『使わない』という表明」してるという意図です。
# 何も書いてないと、ミスで戻り値をチェックしてないのか、
# 分かった上でチェックの必要がないのか分かりにくい、と考えます。

Sum = (void)PlusPoint;
とはいえ、こういう書き方はしない(できない)です。
コンパイル通らないでしょう?

あくまで、例えばこんな感じで使います。
(void)PlusPoint(1, 2);

QB,C型肝炎が歯科治療でうつる可能性は?

 上記の通りです。
ポイントは、歯医者での口腔処置の場合、一人一人使い捨てでない機器があると思うのですが、処置時に出血もありますのでB,C型肝炎の感染の可能性があるのではないかと思うのですがいかがでしょう?

Aベストアンサー

使い捨てでない機材であっても、リンク先のような消毒を行えば
ウイルスは除去されるようです。

しかしながら、消毒をされていない機器であれば、感染の可能性はあるということになります。
消毒していない機器を使っているような歯科があったとしたら、
ウイルスを撒き散らしているようなものです。

歯科の機器や理髪店のかみそりなど消毒が十分であると祈っています。

参考URL:http://www.mhlw.go.jp/bunya/kenkou/kekkaku-kansenshou09/02-10.html

Qvoid func( void )について

void func( void )について

右側のvoidは引数がないという事は分かったのですが左側の
voidの意味は「値を返さないreturn型に用いる」とあったのですが
値を返さないreturnは使う意味はあるのでしょうか?
またどういった時に使うのでしょうか??

あと return 0 と return の違いは何なのでしょうか??

ご教授よろしくお願いいたします。

Aベストアンサー

#2,4です。
C言語には必ず最初に起動されるmainという名前の特別な関数が必要です。
前回書いた関数は関数名がfuncのため、「最初に起動される関数がないよー」とのことでコンパイルエラーがでます。

というわけで、以下のように変えていただければ良いと思います。(全角スペース入れてないです)

#include <stdio.h>

void func(int n){
int i = 1;
int sum = 0;
if( n <= 0 )
{

printf( "1以上の値を指定してください\n" );
return;
}

while( i <= n )
{
sum += i;
i++;
}
printf( "結果は%dです\n", sum );
}

int main(){
func();

return 0;
}


main関数はint型の値を返すのが好ましいとされているので何らかの値を返そうということで0(エラーがないという意味かな)を返すのがほとんどです。慣例と思っていただいても良いと思います。
もちろん、他の関数は値を返す必要がなければ、
void func(void)のように定義してやればいいです。

#2,4です。
C言語には必ず最初に起動されるmainという名前の特別な関数が必要です。
前回書いた関数は関数名がfuncのため、「最初に起動される関数がないよー」とのことでコンパイルエラーがでます。

というわけで、以下のように変えていただければ良いと思います。(全角スペース入れてないです)

#include <stdio.h>

void func(int n){
int i = 1;
int sum = 0;
if( n <= 0 )
{

printf( "1以上の値を指定してください\n" );
return;
}

while( i <= n )
{
sum += i;
i++; ...続きを読む

Qキスでうつるものは

ある風俗嬢のブログにこう書かれていました。
¨キス感染¨
A型肝炎、B型肝炎、C型肝炎。
咽頭クラミジア、咽頭淋病。
HIVウィルス感染=エイズ。

キスでうつります。
キスで簡単にうつる。

あ、、歯周病も歯肉炎もね!!

みんなにありえる可能性。
SEXよりも身近な可能性。
キス感染。


とありましたが、この中で本当にキスで感染する可能性のあるもの

そしてそれに感染した場合に完全に直る病気なのか
完治は難しいのかを教えてください。

Aベストアンサー

咽頭クラミジア、咽頭淋病、口腔ヘルペスは移ります
歯周病は歯周病菌を持っていない人(赤ちゃんなどです。風俗に行く方で歯周病菌を持っていない、という方がいるとは思えませんが…)なら移ります

ヘルペスなど痒痛いブツブツができてかなり辛いです
確かに防ぎようがないという点でHIVより身近でキケンといえますね

Qvoid main (void)について、、、

またまたすみません。
プログラムを書くときに、

  void main (void)  

と、とりあえず最初にこれを書く、と覚えていて意味がわかりません。
小学生でも理解できるくらいに噛み砕いて説明をお願いします。

Aベストアンサー

まず初めに、過去ログの探し方についてです。
http://oshiete.goo.ne.jp/ask/howto/search.html

実際に、このカテゴリーから「void main 戻り値 引数」で検索をすれば、今だと56件ほど返ってきます。その中でお勧めなのが、以下の3件でしょうか。(各レベルについては、私の独断と偏見によるものです。)

小学生レベル→
http://oshiete1.goo.ne.jp/kotaeru.php3?q=100506

初学者レベル→
http://oshiete1.goo.ne.jp/kotaeru.php3?q=487521

技術者レベル→
http://oshiete1.goo.ne.jp/kotaeru.php3?q=328994


あと、「小学生でも理解できるくらいに噛み砕いて…」についてですが、強いてあげれば以下のようにもなるかと。
例えば、「関数」という抽象的概念の具体例としてよくあげられるものに、「自動販売機」があります。もちろん、この中にも単にお金を入れておく容器や缶ジュースなどとは別に、お釣りがいくらなのかとか、缶ジュースの残りがいくつなのかをチェックするようなソフトウェアが入っているはずです。(最新のものだと、100円玉の裏表の模様まで、チェックするものがあるらしいですね。)
そのようなプログラムの動作の概略を、main関数を用いて簡単に表せば、以下のようになると思います。(あくまで、噛み砕いて説明しているからであって、厳密には全然違いますよ。というより、正確にはメーカーの人じゃないと分からないでしょう。)

缶ジュース main (120円)
500ml入りペットボトル main (150円)

もちろん、これをドラクエ風に書けば、以下のようにもなるかと。

HPがフルに回復 main (ベホマ)
メタルキングの剣 main (37000G)

余談ですが、パルプンテなども、内部ではおそらく乱数なんかを発生させているんでしょうね~。ゲームプログラミングの方は一度もしたことがないので、あくまで想像ですけど。

まず初めに、過去ログの探し方についてです。
http://oshiete.goo.ne.jp/ask/howto/search.html

実際に、このカテゴリーから「void main 戻り値 引数」で検索をすれば、今だと56件ほど返ってきます。その中でお勧めなのが、以下の3件でしょうか。(各レベルについては、私の独断と偏見によるものです。)

小学生レベル→
http://oshiete1.goo.ne.jp/kotaeru.php3?q=100506

初学者レベル→
http://oshiete1.goo.ne.jp/kotaeru.php3?q=487521

技術者レベル→
http://oshiete1.goo.ne.jp/kotaeru.php3?...続きを読む


人気Q&Aランキング