16

まず第一に、私はほとんど初心者なので、必要なものを説明する方法がわかりませんが、試してみます。(検索しましたが、完全な答えが見つかりませんでした)。

私は自分でCを学び、コードブロックを使用しています。

プログラムで使用するカスタム関数の独自のミニライブラリを作成したいと思います。

「C」というフォルダがあります。「C」の中には、「Exercises」というフォルダがあり、本からすべての小さなプロジェクトを実行しています。

また、「C」内に、「MyC」という別のフォルダーを作成します。このフォルダーには、独自のヘッダーファイルとカスタム関数の実装を含む.cファイルを保持します。たとえば、これらの.hと.cは「MyC」に保存されます。

//test.h

#ifndef _TEST_H
#define _TEST_H

int mySum(int, int);

#endif // _TEST_H

//test.c

#include <stdio.h>
#include "test.h"

int mySum(int a, int b)
{
    return a + b;
}

だから今、私がやろうとしているのは、「演習」で新しいプロジェクトを作成できるようにすることであり、test.hとtest.cの両方のコピーをプロジェクトに持ち込む必要はありませんが、代わりに#include my test .hそして次のようなことをします:

//testMain.c

#include <stdio.h>
#include <test.h>

int main(void)
{
    printf("\n2 + 1 = %d", mySum(2, 1));

    return 0;
}

<>は標準ヘッダー用ですが、引用符は現在のフォルダー内のヘッダー用であり、それは私が望まないことです。

これを行うことは可能ですか?どのように?

[設定]>[コンパイラ]に移動する方法について読みました。検索ディレクトリで、ヘッダーがあるが機能しなかったパスを追加します。「'mySum'への未定義の参照」というエラーが表示されます。#includeで引用符と角かっこを試してみました。

これを行うために必要なことを段階的に説明していただけますか?

4

4 に答える 4

8

ヘッダー用

1つのフォルダに戻る場合は、次のようにします#include "../something.h"

あなたの場合、これを行うだけです:#include "../MyC/test.h"

..単に1つのディレクトリに戻ることを意味します。

このようにするのが嫌いな場合、または単純にしたい場合は、次のようにコンパイラパラメータ#include "test.h"を使用して行うことができます。-I

-I'../MyC/'

cファイルの場合

コンパイラパラメータで同様のことを行う必要があります。

gcc testMain.c ../MyC/test.c

つまり、1つのディレクトリに戻る..ことを意味します。

于 2013-03-12T17:25:16.440 に答える
3

コンパイルするときは、-Iオプションを含める必要があります。例えば:

gcc -I<path-to-headers> <path-to>/test.c testMain.c -o test_driver
于 2013-03-12T17:24:01.693 に答える
3

ヘッダーフォルダを追加したので、問題ありません。あなたは#include通常通りにできます。ヘッダーが見つからない場合は、「ファイルが見つかりません」というエラーが発生します。

ただし、このディレクトリ内のオブジェクトコードに対してもリンクする必要があり、関数を検索するオブジェクトファイルを指定する必要があります。IDEには、コンパイラオプションを追加するための設定が必要../MyC/test.oです。これらの関数でコードをまだコンパイルしていない場合は、代わりに.cファイルを指定する必要があります。

于 2013-03-12T17:27:22.860 に答える
0

「folder_to_code」にとが含まれていることを考えるtest.htest.c

gcc次のコマンドを使用して、インクルードフォルダーを追加できます。

gcc -I folder_to_code folder_to_code/test.c testMain.c -Wall -o program.exe

#include "test.h"このようにして、問題なくコードに追加できます。

于 2013-03-12T17:25:14.167 に答える