2009-07-26 15 views
0

私はstrncpy関数のラッパーを作成しました。再利用コードを入れる場所

多くのヘッダーとソースファイル(すべて約20個)が含まれているプロジェクトでこれを使用する必要があります。そして、このラッパーはそれらのほとんどで使用されます。

コードが非常に短いので、このラッパーを自分のプロジェクトに実装する最良の方法はどこですか?

これは、これがutilities.hというヘッダーにあると便利だと思います。それを必要とするすべてのソースファイルにこのヘッダーを含めますか?

将来のプロジェクトでも可能でしょうか?

私はCプログラムで新しくなったので、この問題に関するいくつかの良いガイダンスを探しています。

多くのおかげで、

/* Null terminate a string after coping */ 
char* strncpy_wrapper(char *dest, const char* source, 
         const size_t dest_size) 
{ 
    strncpy(dest, source, dest_size); 
    /* 
    * If the destination is greater than zero terminate with a null. 
    */ 
    if(dest_size > 0) 
    { 
     dest[dest_size - 1] = '\0'; 
    } 

    return dest; 
} 

答えて

3

ヘッダーを使用することをお勧めします。私はあなたの周りに 'ガード'を置くことをお勧めします。次のようなもの:

#ifndef UTILITIES_H 
#define UTILITIES_H 

//definitions here 

#endif //UTILITIES_H 
+0

簡単な質問です。これはちょうど小さな関数なので。関数の宣言にヘッダ(utilities.h)を、定義用にソースファイル(utilities.c)を用意する必要がありますか? – ant2009

+1

通常、コードを.cファイルに、宣言(関数シグネチャ)を.hファイルに入れます。このようにして、ソースコードを「出荷」する必要はありません(コンパイルされたコードで十分です)。 小さな関数の場合、それは奇妙ですが、プロジェクトが大きくなると、必要なものだけをコンパイルし、すべてのソースファイルではなく、コンパイル時間を大幅に増やすことができます。 – Burkhard

1

は、私はあなたが正しい道に向かっていると思います。必要な場所に含めることができる共通の機能を持つライブラリを構築することは非常に一般的です。あなたはヘルパー、コモン、またはあなたがユーティリティを提案したような名前で頻繁にそれらを見つけるでしょう。

2

utilities.hファイルに入れるというあなたの考えは悪くありません。それは非常に一般的な解決策です。しかし、アプリケーションでこの関数を分類できる特別な方法がないことを確認してください。私たちが皆知っているように、すべてが雑多とラベル付けできます。これはまさにutilities.hファイルの意味です。

関連する問題