王師兄的程式,我覺得很有意思。對於數值運算,比如sin(sin(0.5)+con(0.5))+exp(2)。如果要我們計算出它的結果。顯然,非常的複雜。我們要寫乙個詞法分析器,還要建立乙個名詞表。要費上好大的勁才能完成。但是,實際上,c語言都有這樣的函式。在,而編譯的工作就是詞法分析。我們完全可以自己寫乙個程式,該程式生成乙個c程式,這樣,就可以充分利用c編譯器的功能了。
請看**:
這是乙個執行的程式,在這個程式中,又呼叫了乙個程式programforzxq,而這個程式生成了乙個動態的程式。
執行程式: example.exe :
//將字串轉換成表示式並求值
#include
#include
#include
#define g_resultfilename "c:"
#define g_maxcharnum 255
double eval(char *strexpression)
void main()
程式programforzxq:
#include
#include
#include
#include
#include
#define g_filename "c:"
#define g_execfilename "myprogram.exe"
#define g_objfilename "myprogram.obj"
#define g_resultfilename "c:"
#define g_maxcharnum 255
void main(int argc,char **strexpression)
pf=fopen(g_filename,"w");
sprintf(temp,"double d=%s;",tmpstrexpression);
fputs("#include /n",pf);
fputs("#include /n",pf);
fputs("#include /n",pf);
fputs("#include /n",pf);
fputs("void main()/n",pf);
fclose(pf);
memset(temp,0,g_maxcharnum);
sprintf(temp,"cl %s >>%s",g_filename,g_resultfilename);
system(temp);
//system(g_execfilename);
memset(temp,0,g_maxcharnum);
sprintf(temp,"%s > %s",g_execfilename,g_resultfilename);
system(temp);
deletefile(g_execfilename);
deletefile(g_objfilename);
}這個程式呼叫編譯器生成了乙個myprogram.exe。然後執行這個程式,並把執行結果儲存在result.txt.所以前面 的那個執行程式就只要顯示這個檔案的內容就可以了。
這樣,就可以很容易的實現了乙個功能相對比較強大的數值計算程式了。可以處理各種複雜 的數值計算。很方便。很好用。我打算把它移植到linux上。應該是乙個很好玩的事情。
C 語言 編譯器
c 語言是高階程式語言,人們在使用 c 語言工作的時候不必用數字碼表示指令,大大簡化了對於計算機底層暫存器的操作,人們可以把工作的重點放在 設計和具體功能的實現,編寫出更易讀易懂的 可是計算機的工作和人類正好相反,c 語言編寫的 對於計算機而言就好比是天書且沒有意義可言,因為計算機是識別機器語言的,...
C語言的編譯器
c語言的常用編譯器 目前最流行的c語言編譯器有以下幾種 gnu compiler collection 或稱 gcc microsoft c 或稱 ms c borland turbo c 或稱 turbo c 這些c語言版本不僅實現了ansi c標準,而且在此基礎上各自作了一些擴充,使之更加方便 ...
C語言編譯器哪個好 6款好用的C語言編譯器推薦
其實win tc是款很不錯的軟體。去用一下你就知道了,因為我自學c時就是用的那個軟體,真的向你推薦它!推薦使用vc 6.0中文版,因為國家考試用的就是那個,當然了還有turbo c這個也是以前國家考試用的,但是這些版本很老了,而且沒有現在的方便,比如你遇到了問題想去諮詢下別人,老版本的尤其是比較經典...