68user's page 掲示板

Prev< No. 4395> Next  [最新発言に戻る] [過去ログ一覧]
No. 4395 # 68user 2005/11/15 (火) 01:55:14
>>4392 DNS勉強中
> ただし、 void class_print(int class) を用いた共用の記述の仕方が
> 分からなかったので、
> codelist_t {class, type}_list[] = { ... };をグローバル化して共用しています。
一般的には、codelist_t を扱う関数を別ソースにし、ソース先頭で
    static codelist_t class_list[] = { ... };
と配列を宣言して、conv_class()・class_print() でその配列を使用
します。static をつければ外部ソースからアクセスできないので、
隠蔽できます。

ただ、複数ファイルに分けると、ヘッダファイルが必要だったり Makefile を
書きたくなったりするので、サンプルであれば分ける必要はないかもしれません。


それはそれとして複数のソースから構成される場合に、グローバル変数の
宣言をヘッダファイルで一元管理する方法をご存知なければ、一度書いて
みるとよいでしょう。

      --- var.h ----
      #ifdef THIS_IS_MAIN
      #define GLOBAL
      #else
      #define GLOBAL extern
      #endif
      GLOBAL class_list[] = {...};
      
      --- main.c ---
      #define THIS_IS_MAIN
      #include "var.h"

      --- sub.c ---
      #include "var.h"

こんな感じです。

Prev< No. 4395> Next  [最新発言に戻る] [過去ログ一覧]