• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:visual c++ 2008のバグ?)

Visual C++ 2008のバグ?

麻野 なぎ(@AsanoNagi)の回答

  • ベストアンサー
回答No.5

まあ、憶測ですが……。 ・isJag() が巡り巡って、canPlacePiece() を呼び出している。 ・isCorrectInput() が 〃。 ・isPieceThatTheColorHas() が〃。 という気がしてきました。(怪しい順番) というか、この程度の流れであれば、バックトレース以前に普通のトレースで何が起こっているか捕まえられるのではなかろうかと。

xxxlazyxxx
質問者

お礼

ご回答ありがとうございます。 ビンゴです! putPiece関数内で呼び出しているdeleteUselessJag関数が原因でした。この関数は不要なデータを探索して削除するというものなのですが、その中で不要なデータかどうか調べるのにcanPlacePiece関数を呼び出していました。 本当にありがとうございました。助かりました。

関連するQ&A

  • Visual C++ 6.0 の使い方について

    こんにちは、よろしくお願いします。 基本的なことで申し訳ないのですが、 Visual C++ 6.0で、ソースを書いている最中に、 例えばprintf関数であれば、 printf( 、とここまで書くと、printf関数のパラメタ一覧が表示されるような設定はどこだったか忘れてしまいました。 すみませんが、よろしくお願いします。

  • Visual C++ Express Edition 警告に関して

    Visual C++ Express Editionを導入して最近Cを学び始めたのですが、 Visual C++ Express Editionでコンパイルした際に警告がたくさん でてしまいます。エラーさえなければ実行はできるようですが、できれば警告もなくしないです。以下がソースファイルです。 #include <stdio.h> int main(void) { int x,y,z; z=1; for(;z == 1;){ printf("数値を入力してください:\n"); scanf("%d",&x); printf("数値を入力してください:\n"); scanf("%d",&y); printf("加算すると%d\n減算すると%d\n" "乗算すると%d\n除算すると商%dは余りは%d\n",x+y,x-y,x*y,x/y,x%y); printf("計算を続けますか?\n続けなるならば1を押してください:"); scanf("%d",&z); } return(0); } コンパイルをすると警告として以下がでました。 c:\program files\microsoft visual studio 8\vc\include\stdio.h(295) : 'scanf' の宣言を確認してください。 今回の例の場合の警告の解決方法と一般的に警告をどのように解決をすればいいのか(エラーだったら文法的に間違えているのだが、警告だと?)教えてください。

  • error C2664

    error C2664 int * x; int * y; SetMouseDispFlag( TRUE ); GetMousePoint( x,y ); int siro; siro= GetColor(255,255,255); if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) == 0 ) { DrawPixel( x , y , siro ) ; error C2664: 'DxLib::DrawPixel' : 1 番目の引数を 'int *' から 'int' に変換できません。 どうすりゃいいの?

  • visual Stdio、C++.net

    visual Stdio、C++.netでC言語で書いたソースをコンパイルしたのですが・ 以下のようにmain関数で引数を受け取るように記述しているにも関わらず この記述のところで止まらず通り抜けて次の処理に進んでしまいます・・ 対処法知っている方いましたらお願いします。 int main(int argc,char *argv[]) { (省略) }

  • 引数に二重配列のある関数について

    void calc(int *a,int b,int c){ a[0]=b+c; a[1]=b-c; } void main(void){ int x[2]; int y=2,z=5; calc(x,y,z); printf("x[0]=%d,x[1]=%d\n",x[0],x[1]); } 上のように引数が普通の配列の関数ならできるのですが, 引数が下のような多重配列になるとエラーが出てしまいできません。 void keisan(int **a,int b,int c){ a[0][0]=b+c; a[0][1]=b-c; a[1][0]=b*c; a[1][1]=b/c; } void main(void){ int x[2][2]; keisan(x,6,2); printf("x[0][0]=%d,x[0][1]=%d\n",x[0][0],x[0][1]); printf("x[1][0]=%d,x[1][1]=%d\n",x[1][0],x[1][1]); } 引数に多重配列を使った場合の関数の作り方について教えてください. お願いいたします.

  • C言語のポインタの考え方について

    ポインタについて理解ができていないのでお聞きしたいのですが 値を交換する関数のプログラミングでこの場合ポインタ で以下にしないといけないと思います。 #include<stdio.h> void swap(int *a int *b){ int c; c=*a; *a=*b; *b=c; } main(){ int x,y; x=123; y=456; swap(&x,&y); printf("x = %d, y = %d\n", x, y); } またポインタを使用せず以下のプログラムではなぜダメのでしょうか。 よろしくお願い致します。 #include<stdio.h> void swap(int a int b){ int c; c=a; a=b; b=c; } main(){ int x,y; x=123; y=456; swap(x,y); printf("x = %d, y = %d\n", x, y); }

  • C++の関数で

    Visual C++で6の4乗を求めるプログラムを作ろうとしたのですがうまくいきません。どこが間違っているか教えていただけないでしょうか? #include "stdafx.h" int get; bekijyo(int,int); void main(void) { int number1,number2; int kekka; number1=6; number2=4; kekka=get; bekijyo(number1,number2); printf("%dの%dは%dです。); } int getbekijo(int x,int y) { int z; if(y==1) return(x); z=x; getbekijyo(x,y-1); return(z); }

  • Visual Stdioで、C言語のプログラミングを勉強してるのですが

    Visual Stdioで、C言語のプログラミングを勉強してるのですが、 不明点があるため質問させて頂きます。 【前提条件】 ---------------------------------------------------- < TestHeader.h > typedef struct A { int (*a)(struct B* x, char* y, struct C** z); } A; ---------------------------------------------------- < TestSource.c > static int func(struct B* x, char* y, struct C** z) { return 0; } struct A D = { .a = func, }; ---------------------------------------------------- 上記の条件で、< main.c >を作成し、 main関数からfunc関数へ遷移するようにしたいです。 書籍などで調べたのですが、main関数の作成方法が分かりません。 ご教授のほど、よろしくお願いします。

  • Microsoft Visual Studio 2005の関数なのです

    Microsoft Visual Studio 2005の関数なのです Microsoft Visual Studio 2005の関数なのですが・・・ 今まではこういう風にやっていたのですが・・・ #include<stdio.h> int main() { double a,b,n; a=10.0; b=20.0; printf("実数A=%f",a); printf("\n実数B=%f",b); n=a+b; printf("\n加算:%lf\n",n); return 0 } 今日から関数を使うことになりました。 関数を使ったやり方がわからないので、教えていただきたいです。 問題は… 2つの実数X,Yを定義し、それぞれ、20.0, 30.0 を代入した後、その加算、減算、積算、除算、あまりの算出を関数を用いて行い、その結果が画面に表示せよ。除算の場合の割る値が0の場合は、エラーを画面に表示すること。 よろしくお願いします。 ちなみに、言語はC++です。

  • Cのポインタについて(関数への値渡し)

    C言語のポインタに関する質問です。関数に引数を渡す方法として以下の誤ったswap関数でなぜだめなのかいまいち得心できません。わかりやすくかみくだいて説明していただけると有り難いです。 できましたら、トレースともうしますか、変数の値の動きを詳細に段階的にプログラムの流れに沿って追っていって、だからこうなんだよ、みたいな解説がいただけたら有り難いです。わがままいってすみません。 /* 誤ったswap関数の宣言 */ void swap(int x, int y); int main(void) { int num1 = 5; int num2 = 10; printf("変数num1の値は%dです。¥n", num1); printf("変数num2の値は%dです。¥n", num2); printf("変数num1とnum2の値を交換します。¥n", num1); swap(num1, num2); printf("変数num1の値は%dです。¥n", num1); printf("変数num2の値は%dです。¥n", num2); return 0; } /* 誤ったswap関数の定義 */ void swap(int x, int y) { int tmp; tmp = x; x = y; y = tmp; } ---------- /* swap関数の宣言 */ void swap(int *pX, int *pY); int main(void) { int num1 = 5; int num2 = 10; printf("変数num1の値は%dです。¥n", num1); printf("変数num2の値は%dです。¥n", num2); printf("変数num1とnum2の値を交換します。¥n", num1); swap(&num1, &num2); printf("変数num1の値は%dです。¥n", num1); printf("変数num2の値は%dです。¥n", num2); return 0; } /* swap関数の定義 */ void swap(int *pX, int *pY) { int tmp; tmp = *pX; *pX = *pY; *pY = tmp; }