1000 行を超えるコードのプロジェクトをコンパイルする最良の方法について疑問に思っていました。プロジェクトをコンパイルする最良の方法について、基本的な質問がいくつかあります。違いがある場合は、GCCを使用しています。私の質問は次のとおりです。
- ライブラリを複数のソース ファイルに含めると、関数が 2 回コピーされますか?
つまり、次のような 2 つのファイルがあるとします。
ソース.c
#include<stdio.h>
...
void static test_func( ){ printf( "Hey!" ); }
Source2.c
#include<stdio.h>
...
void static test_func( ){ printf( "Hey!" ); }
関数 printf は、実行可能ファイルに 2 回コピーされますか? 多くの場合、同じヘッダーファイルを共有する複数のソースファイルがあり、それが悪い習慣であるかどうか疑問に思っているため、これを避けたいと考えています。
ある時、これを使って他のソースファイルをインクルードしました:
Source.c
#include<stdio.h>
#include "source2.c"
しかし、それも悪い習慣なのかどうかはわかりませんでした。それは私を別の質問に導きます:
- ソースファイルを含めることは悪い習慣ですか?
注: 悪い習慣とは、何かが慣習に反しているか、ある種の非効率性を引き起こしていることを意味します。
編集:ライブラリがファイル間で共有されていることを読みました。つまり、私の最初の質問に対する答えはノーです。ただし、プリプロセッサを使用してソース ファイルをインクルードすることが一般的な方法であるかどうかに興味があります。