[Lab12參考]  sortstu.exe 等的原始檔 readstu2.c 在教材參考資料區
  這個 readstu2.c 用了六種方法對studat.txt排序,
不過只對"學號" 排序!
之前給大家測試的四個 .exe 執行檔案,
sortqqq.exe, sortdebug.exe, sortstu.exe,
其實都是從這個 readstu2.c 生出來的!
只是在 gcc 時加上不同的 -D 選項!
詳細請看readstu2.c 的最後面! 
先看看這些 Running script 的部分: 


D:\test> path C:\Dev-Cpp\bin;%path%
D:\test> gcc -DGOOD  readstu2.c -o sortstu.exe

D:\test> gcc readstu2.c -o sortqqq.exe

D:\test> gcc -DDEBUG -DNOFLAG readstu2.c -o sortdebug.exe

D:\test> dir so*exe

sortdebug.exe   sortqqq.exe     sortstu.exe
               3 個檔案          71,639 位元組
D:\test>
D:\test> gcc -DBEST -DSPEED readstu2.c -o sortbest.exe
 
D:\test> gcc genscore.c -o gens.exe
D:\test> gens.exe
 wait...File studat.txt generated successfully.
Total 81482 student records.

D:\test> sortqqq

D:\test> sortdebug

D:\test> sortstu

D:\test> sortbest

D:\test> gcc gen222.c -o gen222

D:\test> gen222
File studat.txt generated successfully.
Total 81381 student records.
 Hit ENTER key...

D:\test> sortqqq

D:\test> sortdebug

D:\test> sortstu

D:\test> 
       
補充說明:
    編譯器 (Compiler) 看到 -DGGYY 時,
會在程式的最前面加入這列:  #define GGYY 
如果用 -DHA=hehe 則加入這列: #define HA hehe 
若用 -DQQ=3388 則加入這: #define QQ 3388 
這樣我們可以在程式中用"條件編譯"(conditional compiling)
例如, #ifdef GGYY
或是, #ifndef GGYY
注意, # 開頭的 #if, #else, #endif 都是給 Compiler 看的!
這招常用在印出除錯(Debug)訊息, 例如你懷疑程式有問題,
不想努力學 Debugger (如 gdb) 的用法,
可以這樣:
  #ifdef DEBUG
     printf("....");  //...
  #endif 
然後正常編譯等於這段的 printf 沒有寫!
但若這樣 gcc -DDEBUG file.c  則等於這段的 printf 有寫!
如果還不太懂, 請用 gogle.com 查詢 "C 條件編譯"