作者 主題: [Help]程式檔太大 ?  (閱讀 3532 次)

0 會員 與 1 訪客 正在閱讀本文。

unitcell

  • 活潑的大學生
  • ***
  • 文章數: 411
    • 檢視個人資料
[Help]程式檔太大 ?
« 於: 2003-01-15 17:55 »
Hi all,

我的程式檔太大了(my_prog.c),
想分成主檔 my_prog.c 及次檔my_prog1.c 和 my_prog2.c
編譯吼為my_prog一個執行檔.

這時我遇到一個問題:
我如何把共用的變數檔即全域,及struct定義的變數,
讓三個程式都可讀取共用的變數呢?

我該參考何本書才有講解至此呢?

Thanx.

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
Re: [Help]程式檔太大 ?
« 回覆 #1 於: 2003-01-15 18:36 »
引述: "unitcell"
Hi all,

我的程式檔太大了(my_prog.c),
想分成主檔 my_prog.c 及次檔my_prog1.c 和 my_prog2.c
編譯吼為my_prog一個執行檔.

這時我遇到一個問題:
我如何把共用的變數檔即全域,及struct定義的變數,
讓三個程式都可讀取共用的變數呢?

我該參考何本書才有講解至此呢?

Thanx.


您可以將全域變數、共用定義以及 struct 放進 my_prog.h 檔,
然後在 my_prog.c、my_prog1.c 以及 my_prog2.c 開頭處,
用 #include "my_prog.h" 引入即可。

建議您買本 C / C++ 的基礎工具書,
任何一種都行,最好是通用的那種,
永遠不會退流行啦!

unitcell

  • 活潑的大學生
  • ***
  • 文章數: 411
    • 檢視個人資料
Re: [Help]程式檔太大 ?
« 回覆 #2 於: 2003-01-15 19:02 »
引述: "螢火飛"
引述: "unitcell"
Hi all,

我的程式檔太大了(my_prog.c),
想分成主檔 my_prog.c 及次檔my_prog1.c 和 my_prog2.c
編譯吼為my_prog一個執行檔.

這時我遇到一個問題:
我如何把共用的變數檔即全域,及struct定義的變數,
讓三個程式都可讀取共用的變數呢?

我該參考何本書才有講解至此呢?

Thanx.


您可以將全域變數、共用定義以及 struct 放進 my_prog.h 檔,
然後在 my_prog.c、my_prog1.c 以及 my_prog2.c 開頭處,
用 #include "my_prog.h" 引入即可。

建議您買本 C / C++ 的基礎工具書,
任何一種都行,最好是通用的那種,
永遠不會退流行啦!


[root@nt5 rd30101]# cat test.h
        FILE *OPF;
[root@nt5 rd30101]# cat test.c
#include"test.h"
#include<stdio.h>


int main(void)
{
        int i,num = 1;


        for(i = 1; i <= 10; i++)
        {
          printf("%d,The value is %d \n", i,i%2);
        }
}
[root@nt5 rd30101]# gcc test.c
In file included from test.c:1:
test.h:1: parse error before '*' token
test.h:1: warning: data definition has no type or storage class

在head file裡不能使用
File *OFP;
 嗎?

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
Re: [Help]程式檔太大 ?
« 回覆 #3 於: 2003-01-15 20:52 »
引述: "unitcell"
引述: "螢火飛"
引述: "unitcell"
Hi all,

我的程式檔太大了(my_prog.c),
想分成主檔 my_prog.c 及次檔my_prog1.c 和 my_prog2.c
編譯吼為my_prog一個執行檔.

這時我遇到一個問題:
我如何把共用的變數檔即全域,及struct定義的變數,
讓三個程式都可讀取共用的變數呢?

我該參考何本書才有講解至此呢?

Thanx.


您可以將全域變數、共用定義以及 struct 放進 my_prog.h 檔,
然後在 my_prog.c、my_prog1.c 以及 my_prog2.c 開頭處,
用 #include "my_prog.h" 引入即可。

建議您買本 C / C++ 的基礎工具書,
任何一種都行,最好是通用的那種,
永遠不會退流行啦!


[root@nt5 rd30101]# cat test.h
        FILE *OPF;
[root@nt5 rd30101]# cat test.c
#include"test.h"
#include<stdio.h>


int main(void)
{
        int i,num = 1;


        for(i = 1; i <= 10; i++)
        {
          printf("%d,The value is %d \n", i,i%2);
        }
}
[root@nt5 rd30101]# gcc test.c
In file included from test.c:1:
test.h:1: parse error before '*' token
test.h:1: warning: data definition has no type or storage class

在head file裡不能使用
File *OFP;
 嗎?


唔!?您似乎還不清楚 include 的意義 ^^|||

test.h 與 test.c 都沒有問題,問題出在 include 的先後次序
FILE 這個是被 stdio.h 所定義,在 stdio.h 未被引入前
您就先指定了 FILE *OPF
gcc 編譯時,不了解 FILE 的型別,所以就無法編譯。

一般使用 include 的習慣是先引入系統的 header file,然後才是自己設計的 header file
如您所提出的例子,只要把 #include "test.h" 與 #include <stdio.h> 對調就行了,您試試。原因就是前面所說的那樣。

unitcell

  • 活潑的大學生
  • ***
  • 文章數: 411
    • 檢視個人資料
Re: [Help]程式檔太大 ?
« 回覆 #4 於: 2003-01-15 23:18 »
引述: "螢火飛"
引述: "unitcell"
引述: "螢火飛"
引述: "unitcell"
Hi all,

我的程式檔太大了(my_prog.c),
想分成主檔 my_prog.c 及次檔my_prog1.c 和 my_prog2.c
編譯吼為my_prog一個執行檔.

這時我遇到一個問題:
我如何把共用的變數檔即全域,及struct定義的變數,
讓三個程式都可讀取共用的變數呢?

我該參考何本書才有講解至此呢?

Thanx.


您可以將全域變數、共用定義以及 struct 放進 my_prog.h 檔,
然後在 my_prog.c、my_prog1.c 以及 my_prog2.c 開頭處,
用 #include "my_prog.h" 引入即可。

建議您買本 C / C++ 的基礎工具書,
任何一種都行,最好是通用的那種,
永遠不會退流行啦!


[root@nt5 rd30101]# cat test.h
        FILE *OPF;
[root@nt5 rd30101]# cat test.c
#include"test.h"
#include<stdio.h>


int main(void)
{
        int i,num = 1;


        for(i = 1; i <= 10; i++)
        {
          printf("%d,The value is %d \n", i,i%2);
        }
}
[root@nt5 rd30101]# gcc test.c
In file included from test.c:1:
test.h:1: parse error before '*' token
test.h:1: warning: data definition has no type or storage class

在head file裡不能使用
File *OFP;
 嗎?


唔!?您似乎還不清楚 include 的意義 ^^|||

test.h 與 test.c 都沒有問題,問題出在 include 的先後次序
FILE 這個是被 stdio.h 所定義,在 stdio.h 未被引入前
您就先指定了 FILE *OPF
gcc 編譯時,不了解 FILE 的型別,所以就無法編譯。

一般使用 include 的習慣是先引入系統的 header file,然後才是自己設計的 header file
如您所提出的例子,只要把 #include "test.h" 與 #include <stdio.h> 對調就行了,您試試。原因就是前面所說的那樣。


是我的錯! 太出心了!
Thank you for ur help!