A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
//コメントが使えているので、比較的最近のコンパイラだと推測します。
(//はC99で追加された仕様)
とはいってもコンパイラが不明ですので、とりあえず手元のGCC4.3.2でコンパイルしてみました。
結果、エラーも警告も出ずにコンパイルできました。
そのときのソースを張っておきます。
質問者様のg2の宣言の仕方に問題があるのではないかと考えています。
質問者様のお手元のコードと比べて違いがないか確認してください。
(そういえば質問者様のg2はgが一部全角になっていました。あわせてご確認ください)
[xxx@xxx tmp]$ gcc -Wall -c test.c
[xxx@xxx tmp]$ cat test.c
struct rts
{
int x;
int y;
} g2;
struct rts checkLeftDown (int x, int y, int boad[9][9])
{
int i;
int j;
struct rts g2;
if (boad[y + 1][x - 1] == boad[y][x])
{
return g2; //隣が同色
}
i = x;
j = y;
while (1)
{
if (boad[j][i] == 0)
{
return g2;
}
i--;
j++;
if (boad[y - 1][x - 1] == boad[j][i] && boad[j][i] != 0)
{
//さらにひっくり返帰る可能性があるか?
}
else
{
if (boad[y][x] == boad[j][i]) //はさむ事ができる?
break;
else
return g2;
}
}
g2.x = i;
g2.y = j;
return g2;
}
void test(void)
{
struct rts g2;
g2 = checkLeftDown (0,0,(void *)0);
}
No.6
- 回答日時:
まず処理系を示しエラーメッセージを正確に書く. あと, そのエラーが「何行目で出ているのか」も書いてあるはずだから, その前後を中心に調べる.
人に聞くときにはこれくらいしようよ.
No.4
- 回答日時:
示されたソースだと、グローバル変数g2を定義した上で、関数内で同じ型のローカル変数g2を定義していますね。
まぁ、これもエラーとは関係ないと思いますが。
ソースを全部見せることに問題があるなら、せめてコンパイラのエラーメッセージを、「すべて」書くと回答がしやすいと思います。
コンパイル時のエラーなら、まず行が指定されています。この場合は、コンパイラとコンパイル時のオプション、OSなどの環境の情報も必要です。
で、これはただの勘なので間違ってるかもしれませんが、呼び出しもとが別のファイルにあって、そっちで構造体の定義が入ってないとかいうことはありませんか。
たとえば、呼び出しもと関数のファイルでは
extern struct rts g2;
でグローバル変数を宣言しておき、
提示したソースのファイルで
struct rts{
int x;
int y;
}g2;
グローバル変数を定義する。
そして、呼び出しもとでは、グローバル変数g2に代入する。
ただ、これは呼び出し元でエラーがでるだろうから、
提示されたソースにエラーが発生した行が含まれている
のであれば、多分別の原因ですね。
メッセージと、グローバル変数g2の存在から考えるに、構造体の不完全型が絡んでいるかもしれないです。
No.3
- 回答日時:
ところで、提示されたソースには何ヶ所かで
return g2;
がありますね。ところが、g2のメンバーx,yに値を格納してから
returnしているのは最後だけですね。
それで本当によいのでしょうか?まあ、本題のエラーの件とは
関係ないと思いますけれど。
No.2
- 回答日時:
ヘッダーファイルのインクルードやmain関数等の定義など、
どうせなら全部ひっくるめてコピペしてくださればよいのに…。
そうすれば、回答しようとする側で何も考えずに
コンパイルできるんですが…。
No.1
- 回答日時:
どのような構造体で、どのように返したのか…
ソースで示された方が早いかと思われます。
あと、コンパイルエラーですか?
実行時のエラーですか?
# 構造体のメンバにポインタ変数があって、ソレが不正なところを指しているとか。
早速のご回答ありがとうございます。
コンパイルエラーです。
構造体宣言は
struct rts{
int x;
int y;
}g2;
で
struct rts checkLeftDown(int x,int y,int boad[9][9]){
int i;
int j;
struct rts g2;
if(boad[y+1][x-1] == boad[y][x]){
return g2;//隣が同色
}
i = x;
j = y;
while(1){
if(boad[j][i] == 0){
return g2;
}
i--;
j++;
if(boad[y-1][x-1] == boad[j][i] && boad[j][i] != 0){
//さらにひっくり返帰る可能性があるか?
}
else{
if(boad[y][x] == boad[j][i])//はさむ事ができる?
break;
else
return g2;
}
}
g2.x = i;
g2.y = j;
return g2;
}
このような関数で返して、
g2 = checkLeftDown(x,y,&boad);
このように構造体を受けています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 正四面体を重ねてできる構造物とは? 2 2023/04/15 00:27
- 不動産業・賃貸業 不動産屋さんにできれば回答いただきたいのですが、2階建ての家は構造計算されていないと知りました。 ( 3 2023/04/10 16:14
- Excel(エクセル) エクセルのSUM関数について 4 2023/04/18 10:37
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
- Excel(エクセル) エクセル テーブル機能の不明点 2 2022/04/14 14:10
- 英語 和訳の手伝いをお願いします 2 2023/02/27 11:42
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- 哲学 非構造主義 1 2023/04/06 16:02
- 数学 【大至急】数学のレポートの問題なんですが分からないので是非教えていただきたいです!本当にお願いします 5 2022/07/25 06:52
- 日本語 日本語のアクセント 1 2022/05/12 13:26
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
long型の定数の末尾にLを付ける...
-
unsigned *という宣言について
-
2重定義って??
-
警告 ”値が割り当てられていな...
-
VC++.NETのビルドエラーについて
-
ハンドルされていない例外が発...
-
直接アドレス指定のポインタの...
-
intとINTの違いは?
-
C++のfor文について
-
DLLでLIBファイルが作成されない
-
visualstudio C# テキストボッ...
-
sshdログの意味
-
エラー「invalid conversion fr...
-
関数の実体定義にヘッダファイ...
-
【#define】 defineで定義した...
-
コンパイルすると error C1083 ...
-
C++の分割コンパイルについて
-
プロトタイプが必要な場合
-
const の使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
long型の定数の末尾にLを付ける...
-
2重定義って??
-
typedef enumの使い方を教えて...
-
visualstudio C# テキストボッ...
-
C++のfor文について
-
関数の実体定義にヘッダファイ...
-
構造体の要素すべてに対する四...
-
ハンドルされていない例外が発...
-
C++でboolにintの値を代入する...
-
変数の型を定義しなかった場合...
-
intとINTの違いは?
-
main.c:7:43: warning: implici...
-
void func( void )について
-
C言語 宣言した変数になにも代...
-
【#define】 defineで定義した...
-
構造体の宣言でエラーが出ます。
-
C言語での方向キー入力判定
-
プログラムの中で別のmainを呼...
-
C言語について質問です。 子プ...
おすすめ情報