by 姓名 說(shuō)的多編譯幾次是可行的。。。
每次都會(huì)出現(xiàn)這個(gè)錯(cuò)誤,但是出錯(cuò)的cpp不同。。。多編譯幾次就過(guò)了
只有需要重新分配內(nèi)存時(shí),內(nèi)存地址才會(huì)變化。D數(shù)組使用類似STL的vector的倍增的分配方式,所以請(qǐng)檢查是否達(dá)到了重新分配的條件。
關(guān)于D語(yǔ)言的評(píng)論,請(qǐng)轉(zhuǎn)到
http://dlang.javaeye.com,D語(yǔ)言圈子里。
re: 配置D語(yǔ)言編程環(huán)境 qiezi 2007-01-02 17:06
D語(yǔ)言這幾天就要發(fā)布1.0版了,請(qǐng)關(guān)注D語(yǔ)言圈子:
http://dlang.javaeye.com
喜歡就行了,要大廠商支持做什么?
說(shuō)沒(méi)有多少人?目前排名已經(jīng)上升到14了吧,一個(gè)只有5歲的語(yǔ)言,應(yīng)該不算低了。
到新聞組去看一看吧,里面也有些C++牛人,譬如Andrei Alexandrescu,我知道我沒(méi)什么眼光,但我知道他們一定比我有眼光。
宏就是macro,再講下去我也說(shuō)不清了。。
簡(jiǎn)單看了一下,原因可能是是早先的一個(gè)版本中把import默認(rèn)為private,所以很多符號(hào)都找不到了,而以前是public就都能找到。你可以試著把它的源文件里面所有import前都加上個(gè)public,我暫時(shí)沒(méi)有時(shí)間去測(cè)試。
re: [Linux] linux使用流水帳 qiezi 2006-09-27 09:17
僅返回值類型不同的重載是不被支持的,只能使用成員函數(shù)模板,這個(gè)在C++中有支持,D里面似乎還沒(méi)有。
D當(dāng)然可以寫(xiě),dwt項(xiàng)目里有一個(gè)例子,我這里也有一篇SDK的:
http://www.shnenglu.com/cpunion/archive/2005/11/11/1061.html
re: [Linux] linux使用流水帳 qiezi 2006-09-25 08:49
你現(xiàn)有的代碼已經(jīng)支持test["b"]=1234了。
只有返回類型不同的函數(shù)重載是不被支持的,目前看到的幾種C系的語(yǔ)言都不支持這個(gè)。
re: [Linux] linux使用流水帳 qiezi 2006-09-24 08:14
看看這個(gè):
http://digitalmars.com/d/function.html
你的test函數(shù)第1個(gè)參數(shù)在D里面不需要。
謝謝指正。數(shù)組原不打算寫(xiě)進(jìn)來(lái)的,比如:
int[] a = [1,2,3];
這種用法都還沒(méi)有支持,非要寫(xiě)成2行。
另外多維數(shù)組在這個(gè)版本里強(qiáng)調(diào)的應(yīng)該是new,應(yīng)該也不是新鮮玩意。所以數(shù)組部分只是簡(jiǎn)單列了一下。
抱歉我對(duì)lua不太熟悉。我試著裝了一個(gè)lua 5.0.2,然后寫(xiě)了下面的測(cè)試:
extern(C){
struct lua_State{}
lua_State *lua_open ();
void lua_close (lua_State *L);
}
void main(){
lua_State* L = lua_open();
lua_close(L);
}
編譯指令:
gdc -o luatest luatest.d -llua
編譯是可以通過(guò)的。不過(guò)在我的lua.h和lualib.h中都找不到luaL_dostring,所以沒(méi)辦法進(jìn)一步測(cè)試了。
注意你從頭文件轉(zhuǎn)過(guò)來(lái)的函數(shù)聲明需要包在extern(C)聲明里面。
另外如果你只是想使用lua,dsource.org上面有個(gè)dlua項(xiàng)目,應(yīng)該是轉(zhuǎn)換了很多頭文件吧,不過(guò)我沒(méi)仔細(xì)看過(guò)。
我也不知道為什么會(huì)有這個(gè)問(wèn)題,下面這三行代碼:
cTest = rb_define_class( " Test " , rb_cObject);
rb_define_method(cTest, " initialize " , cast(func_type) & t_init, 0 );
rb_define_method(cTest, " add " , cast(func_type) & t_add, 1 );
看樣子只執(zhí)行了前面一行,initialize默認(rèn)是會(huì)生成這樣一個(gè)方法的。
這是從上面拷貝下來(lái)的,好像字符串里面被加了空格,不知道你有沒(méi)有去掉它?
so.c只是啟動(dòng)D運(yùn)行時(shí)環(huán)境,不會(huì)影響到這個(gè),不啟動(dòng)它只可能某些地方會(huì)出現(xiàn)段錯(cuò)誤。所以你可以檢查一下這個(gè).d文件里是否有不同?
to nojoking:
我已經(jīng)在我的機(jī)器上測(cè)試過(guò)了,不太明白你這里出現(xiàn)的原因,你測(cè)試一下我這里的代碼再說(shuō)。我打了個(gè)包:
http://www.shnenglu.com/Files/cpunion/rubyd_test.zip 你根據(jù)你機(jī)器的路徑修改一下Makefile即可使用。