私は平均的なJavaスキルのC初心者です。ファイル間でCコードを正しく再利用する方法がわかりません。C - ファイル間のコード/メソッドの適切な再利用
はのは、私は2つのファイル/モジュールを持っているとしましょう:server.c
とclient.c
彼らは(GCCに)リンクされていないと、別のプロセスで実行する必要があります。
server.c
には、client.c
に使用したい2つの方法があります。これらのメソッドは、同じモジュール内でグローバル変数、静的変数(const)を使用します。基本的には、私は他のファイルにコピーするときと同じ機能を望みます。
小さな例:
server.c
static const char *progname = "server";
static int sockfd = -1;
static int connfd = -1;
static void free_resources(void)
{
if (sockfd >= 0) {
(void) close(sockfd);
}
if (connfd >= 0) {
(void) close(connfd);
}
}
client.c
static const char *progname = "client";
static int sockfd = -1;
static int connfd = -1;
// I want to use free_resources here
私はclient.c
で同じ方法を使用したい場合は、何がそれを行うための正しい方法でしょうか?
この方法で個別のutil.c
/util.h
モジュールを作成した場合、どのようにグローバル変数にアクセスできますか?私はそれらを毎回議論として渡すべきですか?静的を削除しますか?
Javaでは、おそらくクラスを作成してグローバル変数への参照を一度渡します。 Cにも同様のアプローチがありますか?私はおそらくクラスを作成しますJavaでは
「私はグローバル変数へのアクセス方法」(機能は外あるutils.cから呼び出し可能でなければならないので、あなたは、
static
キーワードを使用できないことに注意してください)。この文脈で「私」は誰ですか? – kaylum@kaylum server.cとclient.cにインクルードするユーティリティモジュール(?)util.cです。 – MWin123
しかし、これらの変数はおそらくutil.cにもあります。したがって、そのファイル内のどの関数もそれらのファイルにアクセスできます。代わりにあなたは何をしようとしましたか?ファイル外の変数にアクセスする必要がある場合は、そのファイル内のいずれかのAPIを返すようにします。 – kaylum