0

私はまだ C を学んでおり、ほとんどの暗黙的な宣言の警告を取り除くには、最初にプロトタイプ ヘッダーを追加することを理解しています。しかし、コードで外部メソッドが使用されている場合に何をするかについては混乱しています。

これは、外部メソッドを使用している場合の私のコードです

    #include <stdio.h>
    #include <string.h>
    int main(void)
    {
      int arrayCapacity = 10;
      int maxCmdLength = 20;

      int A[arrayCapacity];
      int count = 0; /* how many ints stored in array A */
      char command[maxCmdLength + 1]; 
      int n;

      while (scanf("%s", command) != EOF)
      {

         if (strcmp(command, "insert") == 0)
         {  
             scanf("%d", &n);                   
             insert (n, A, arrayCapacity, &count);
             printArray(A, arrayCapacity, count);
         }
         else if (strcmp(command, "delete") == 0)
         {

             scanf("%d", &n);
             delete(n,A,&count);
             printArray(A, arrayCapacity, count);

        }       
        else
        {
             scanf("%d", &n);
             printArray(A, arrayCapacity, count);
        }
     }
     return 0;
    }   

メソッドprintArray、挿入、および削除はすべて次の形式です。printArray.o, insert.o, delete.o

これが私のプログラムのコンパイル方法です:gcc -Wall insert.o delete.o printArray.o q1.c そして、これらの警告が表示されます:

q1.c: In function âmainâ:
q1.c:20: warning: implicit declaration of function `insert'
q1.c:21: warning: implicit declaration of function `printArray'
q1.c:30: warning: implicit declaration of function `delete'

これをヘッダーに含めようとしましたが、ファイルまたはディレクトリが見つからないというエラーが表示されます。

どんな助けでも感謝します。

4

5 に答える 5

2

foo.h次のようにヘッダーファイルに入れます。

 extern void printArray(int *A, int capacity, int count);
 ...

次に、そのファイルをソースに含めます

 #include "foo.h"
于 2012-06-21T15:31:44.510 に答える
0

同じファイル内の他の関数の場合と同じように、ファイルの先頭に関数プロトタイプを配置できるはずです。残りはリンカーが処理する必要があります。

于 2012-06-21T15:42:27.427 に答える
0

このような警告を取り除くには、正しいヘッダーを含める必要があります。

「ファイルが見つかりません」というエラーが発生した場合は、次のように含めてみてください

#include "myheader.h"

ヘッダーファイルをソースコードと同じディレクトリに配置します。

一般的に言えば、#include "file"はプログラマー定義のヘッダー用ですが、#include <file>isまたは標準ヘッダー用です。

于 2012-06-21T15:28:13.947 に答える
0

.oこれらのファイルはどこから入手しましたか? 自分で作成した場合は、対応する.hファイルを作成する必要があります。これらのファイルを別の場所から取得した場合は、同じ場所でヘッダーを検索する必要があります。

于 2012-06-21T16:05:08.670 に答える