2017-02-03 5 views
-1

こんにちは私の関数に関してはエラーが発生しています。定義されておらず、コンパイラが本当に望んでいるものを理解できません。そして、いいえ、私は配列を使うことができません。グローバル変数の作成には問題があります。このようにする必要があります。関数のエラー 'redefined'

エラー4エラーC2371: 'moveHandler':再定義。次のエラーメッセージが表示されます。別の基本的なタイプは、c:プロジェクト\ Visual Studioの2012 \ \ユーザー\所有者\ドキュメント\ project36 \ project36 \ source.c 120 1 Project36

関数の定義:

void moveHandler(char source, char destination, char *pa, char *pb, char *pc, char *pd, char *pe, char *pf, 
        char *pg, char *ph, char *pi, char *pj, char *pk, char *pl, char *pm, char *pn, char *po) { 
         char temp; 

         if (source == 'D' && destination == 'A') { 
          temp = *pa; 
          *pa = *pd; 
          *pd = temp; 
         } 
    return; 
    } 

関数コール:

moveHandler(sourcePiece, destination, &pa, &pb, &pc, &pd, &pe, &pf, &pg, &ph, &pi, &pj, &pk, &pl, &pm, &pn, &po); 
+0

私のああ...これは私が「最長の引数リストでいずれかを定義する前に、すべての機能を宣言し、この問題に対処するには

今まで見たことがあります.. –

+0

15枚+2他の議論、申し訳ありません。 –

+0

配列や構造について聞いたことがありますか? –

答えて

4

Cコードで宣言されていない関数を呼び出しています。呼び出す前にC関数(プロトタイプ付き)を宣言してください。

そして、質問をする前にSOを検索してみることは意味があります。 「再定義、異なる基本タイプ」を検索すると、すぐに多種多様な回答が得られます。

0

コンパイラが見つけることができない、またはわからない関数を呼び出すと、リンカが扱う別のライブラリのような別の場所からリンクされているとみなされ、intを返します。後でコンパイラは、それが呼ばれる(が、あなたのコード内で定義または宣言されていない)ことが見ている後に機能を定義する場合、それはすでに機能が外部とリターンが存在しなければならないことを決めたので、

、コンパイラが再定義エラーがスローされますint

悪い:

#include <stdio.h> 
int main() 
{ 
    printf("%d\n", add2(5, 6)); 
    return 0; 
} 
int add2(int a, int b) 
{ 
    return a + b; 
} 

グッド:

#include <stdio.h> 
int add2(int a, int b); 
int main() 
{ 
    printf("%d\n", add2(5, 6)); 
} 
int add2(int a, int b) 
{ 
    return a + b; 
}