1、 聲明外部變量 現代編譯器一般採用按文件編譯的方式,因此在編譯時,各個文件中定義的全局變量是 互相透明的,也就是說,在編譯時,全局變量的可見域限制在文件內部。下面舉一個簡單的例子。創建一個工程,裡面含有A.cpp和B.cpp兩個簡單的C++源文件: //A.cpp int i; void main() { } //B.cpp int i; 這兩個文件極為簡單,在A.cpp中我們定義了一個全局變量i,在B中我們也定義了一個全局變量i。我們對A和B分別編譯,都可以正常通過編譯,但是進行鏈接的時候,卻出現了錯誤,錯誤提示如下: Linking... B.obj : error LNK2005: "int i" (?i@@3HA) already defined in A.obj Debug/A.exe : fatal error LNK1169: one or more multiply defined symbols found Error executing link.exe. A.exe - 2 error(s), 0 warning(s) 這就是說,在編譯階段,各個文件中定義的全局變量相互是透明的,編譯A時覺察不到B中也定義了i,同樣,編譯B時覺察不到A中也定義了i。但是到了鏈接階 段,要將各個文件的內容「合為一體」,因此,如果某些文件中定義的全局變量名相同的話,在這個時候就會出現錯誤,也就是上面提示的重複定義的錯誤。因此, 各個文件中定義的全局變量名不可相同。 在鏈接階段,各個文件的內容(實際是編譯產生的obj文件)是被合併到一起的,因而,定義於某文件內的全局變量,在鏈接完成後,它的可見範圍被擴大到了整 個程序。這樣一來,按道理說,一個文件中定義的全局變量,可以在整個程序的任何地方被使用,舉例說,如果A文件中定義了某全局變量,那麼B文件中應可以使 用該變量。修改我們的程序,加以驗證: //A.cpp void main() { i = 100; //試圖使用B中定義的全局變量 } //B.cpp int i; 編譯結果如下: Compiling... A.cpp C:\Documents and Settings\wangjian\桌面\try extern\A.cpp(5) : error C2065: 'i' : undeclared identifier Error executing cl.exe. A.obj - 1 error(s), 0 warning(s) 編譯錯誤。 其實出現這個錯誤是意料之中的,因為:文件中定義的全局變量的可見性擴展到整個程序是在鏈接完成之後,而在編譯階段,他們的可見性仍侷限於各自的文件。編 譯器的目光不夠長遠,編譯器沒有能夠意識到,某個變量符號雖然不是本文件定義的,但是它可能是在其它的文件中定義的。雖然編譯器不夠遠見,但是我們可以給 它提示,幫助它來解決上面出現的問題。這就是extern的作用了。 extern的原理很簡單,就是告訴編譯器:「你現在編譯的文件中,有一個標識符雖然沒有在本文件中定義,但是它是在別的文件中定義的全局變量,你要放行!」我們為上面的錯誤程序加上extern關鍵字: //A.cpp extern int i; void main() { i = 100; //試圖使用B中定義的全局變量 } //B.cpp int i; 順利通過編譯,鏈接。 2、 在C++文件中調用C方式編譯的函數 C方式編譯和C++方式編譯 相對於C,C++中新增了諸如重載等新特性,對於他們的編譯,必然有一些重要的區別。 我們將下面的小程序分別按C和C++方式編譯,來探討兩種編譯方式的區別。 int i; int func(int t) { return 0; } void main() { } 以C方式編譯的結果: COMM _i : DWORD PUBLIC _func PUBLIC _main 以C++方式編譯的結果: PUBLIC ?i@@3HA ; i PUBLIC ?func@@YAHH@Z ; func PUBLIC _main 可見,C方式編譯下,變量名和函數名之前被統一加上了一個下劃線,而C++編譯後的結果卻複雜的多,i變成了?i@@3HA,func變成了?func@@YAHH@Z。C++中的這種看似複雜的命名規則是為C++中的函數重載,參數檢查等特性服務的。 多文件程序中的函數調用一般情況下,工程中的文件都是CPP文件(以及頭文件)。如下面的程序僅包含兩個文件:A.CPP和B.CPP: //A.CPP void func(); void main() { func(); } //B.CPP void func() { } 程序的結構是這樣的:在文件B.CPP中定義了一個函數void func(),main函數位於文件A.CPP,在main函數中調用了B中定義的函數func()。要在A中調用B中定義的函數,必須要加上該函數的聲 明。如本例中的void func();就是對函數func()的聲明。如果沒有聲明的話,編譯A.CPP時就會出錯。因為編譯器的目光只侷限於被編譯文件,必須通過加入函數聲明 來告訴編譯器:「某個函數是定義在其它的文件中的,你要放行!」,這一點跟用extern來聲明外部全局變量是一個道理。 需要注意的是,一般的程序都是通過包含頭文件來完成函數的聲明。拿本例來說,一般是創建一個頭文件B.H,在頭文件中加入聲明語句void func(); 並且在A.CPP中加入包含語句:#include 「B.H」。在C++程序中,頭文件的功能從函數聲明被擴展為類的定義。 不同編譯方式下的函數調用。如果在工程中,不僅有CPP文件,還有以C方式編譯的C文件,函數調用就會有一些微妙之處。我們將B.CPP改作B.C: //A.CPP void func(); void main() { func(); } //B.C void func() { } 對A.CPP和B.C分別編譯,都沒有問題,但是鏈接時出現錯誤。 Linking... A.obj : error LNK2001: unresolved external symbol "void __cdecl func(void)" (?func@@YAXXZ) Debug/A.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. A.exe - 2 error(s), 0 warning(s) 原因就在於不同的編譯方式產生的衝突。 對於文件A,是按照C++的方式進行編譯的,其中的func()調用被編譯成了call ?func1@@YAXXZ。如果B文件也是按照C++方式編譯的,那麼B中的func函數名也會被編譯器改成?func1@@YAXXZ,這樣的話,就沒有任何問題。 但是現在對B文件,是按照C方式編譯的,B中的func函數名被改成了_func,這樣一來,A中的call ?func1@@YAXXZ這個函數調用就沒有了著落,因為在鏈接器看來,B文件中沒有名為?func1@@YAXXZ的函數。 事實是,我們編程者知道,B文件中有A中調用的func函數的定義,只不過它是按照C方式編譯的,故它的名字被改成了_func。因而,我們需要通過某種方式告訴編譯器:「B中定義的函數func()經編譯後命名成了_func,而不是?func1@@YAXXZ,你必須通過call _func來調用它,而不是call ?func1@@YAXXZ。」簡單的說,就是告訴編譯器,調用的func()函數是以C方式編譯的,fun();語句必須被編譯成call _func;而不是call ?func1@@YAXXZ。 我們可以通過extern關鍵字,來幫助編譯器解決上面提到的問題。 對於本例,只需將A.CPP改成如下即可: //A.CPP extern "C" { void func(); } void main() { func(); } 察看彙編代碼,發現此時的func();語句被編譯成了call _func。 3、 補充 同2一樣,仍然是C,C++混合編程的情形,考慮下面的程序: //A.CPP extern int i; void main() { i = 100; } //B.C int i; 程序很簡單:在文件B.C中定義了一個全局變量i,在A.CPP中使用了這個全局變量。 編譯沒有問題,鏈接時卻出現錯誤: Linking... A.obj : error LNK2001: unresolved external symbol "int i" (?i@@3HA) Debug/A.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. A.exe - 2 error(s), 0 warning(s) 這是因為,在C方式編譯下,i被重命名為_i,而在C++方式下,i會被重命名為?i@@3HA。 因而,我們只用extern int i;來聲明還不夠,必須告訴編譯器,全局變量i是以C方式編譯的,它會被重命名為_i,而不是?i@@3HA。我們修改A.CPP,如下: //A.CPP extern "C" { int i; } void main() { i = 100; } 程序正常通過編譯和鏈接。我們察看一下彙編代碼,發現語句i = 100;被編譯成了mov DWORD PTR _i, 100。 |
2010年1月1日 星期五
extern 和 C/C++,C++技術文章,C++系列教程,C++
extern 和 C/C++,C++技術文章,C++系列教程,C++
2009年12月29日 星期二
直系血親不宜輸血? 偶像劇演對了-Yahoo!奇摩新聞
直系血親不宜輸血? 偶像劇演對了-Yahoo!奇摩新聞:
更新日期:
2009/12/29 04:11
〔記者洪素卿/台北報導〕偶像劇「下一站,幸福」劇情漸入高潮,週日播出的最新一集,劇中醫師一句「直系血親不能輸血」,讓女主角安以軒及時阻止仍不知道自己是小孩生父的吳建豪輸血給小小彬,也引發戲迷們熱烈討論,此話究竟是否真有科學根據?
對此,醫師表示,偶像劇的編劇沒有寫錯,直系血親間輸血確實可能要命!
網友認為編劇鬼扯 引發熱烈討論
偶 像劇「下一站,幸福」,週日播出由小小彬飾演的「梁小樂」,從階梯上跌下來受傷流血,送醫急救需要輸血的橋段,安以軒飾演的媽媽欲捐血給兒子,遭劇中醫生 以「直系血親不能輸血給自己小孩」為由婉拒;緊接著吳建豪飾演的「任光晞」便表示自己血型相同願意捐血,但由於他就是孩子生父,使得孩子的媽媽脫口而出 「不能捐」,並向醫師使眼色求救。
雖然部分網友認為這又是一個常見的血型認親橋段,不過,網路上卻意外引發不少戲迷討論為什麼直系血親不能輸血?有人認為是編劇鬼扯,還有人說自己曾接受過父親輸血並沒有問題,甚至有網友推論其實是劇中醫師、亦即第二女主角為了試探男主角是不是孩子的爹。
不過,國內血液醫學專家、馬偕醫院林媽利醫師及台北榮民總醫院血液腫瘤科主治醫師邱宗傑均表示,編劇並沒有寫錯,直系血親間輸血確實可能引發「移植物抗宿主」的嚴重疾病。
醫師:可能引發移植物抗宿主疾病
林媽利解釋,某些家庭因其親子間的基因型態組合非常特別,以至於直系血親間輸血時,輸入患者體內的血液,反而對患者發動攻擊,就像是「乞丐趕廟公」一樣,導致嚴重致命反應。
如果真的一時找不到其他血液,只剩直系血親能緊急輸血時,也不是完全沒有解套方法。林媽利指出,只要先將要輸給患者的血液以放射線照射,讓血液中可能對患者發動攻擊的淋巴球不能作怪,再輸入患者體內即可。
林媽利說,除了這類嚴重致命疾病外,由於多數人不見得清楚自己是否有潛在疾病,因此親屬間緊急輸血,並不比已經檢驗過關的血液更安全。
對此,醫師表示,偶像劇的編劇沒有寫錯,直系血親間輸血確實可能要命!
網友認為編劇鬼扯 引發熱烈討論
偶 像劇「下一站,幸福」,週日播出由小小彬飾演的「梁小樂」,從階梯上跌下來受傷流血,送醫急救需要輸血的橋段,安以軒飾演的媽媽欲捐血給兒子,遭劇中醫生 以「直系血親不能輸血給自己小孩」為由婉拒;緊接著吳建豪飾演的「任光晞」便表示自己血型相同願意捐血,但由於他就是孩子生父,使得孩子的媽媽脫口而出 「不能捐」,並向醫師使眼色求救。
雖然部分網友認為這又是一個常見的血型認親橋段,不過,網路上卻意外引發不少戲迷討論為什麼直系血親不能輸血?有人認為是編劇鬼扯,還有人說自己曾接受過父親輸血並沒有問題,甚至有網友推論其實是劇中醫師、亦即第二女主角為了試探男主角是不是孩子的爹。
不過,國內血液醫學專家、馬偕醫院林媽利醫師及台北榮民總醫院血液腫瘤科主治醫師邱宗傑均表示,編劇並沒有寫錯,直系血親間輸血確實可能引發「移植物抗宿主」的嚴重疾病。
醫師:可能引發移植物抗宿主疾病
林媽利解釋,某些家庭因其親子間的基因型態組合非常特別,以至於直系血親間輸血時,輸入患者體內的血液,反而對患者發動攻擊,就像是「乞丐趕廟公」一樣,導致嚴重致命反應。
雖說台灣約莫只有二%家庭有這類基因組合,且這些家庭發生「移植物抗宿主」疾病的機率也只有一%,但因一旦發生就無藥可解,且死亡率非常高,仍然不可不防。
以放射線照射血液 才能輸給患者如果真的一時找不到其他血液,只剩直系血親能緊急輸血時,也不是完全沒有解套方法。林媽利指出,只要先將要輸給患者的血液以放射線照射,讓血液中可能對患者發動攻擊的淋巴球不能作怪,再輸入患者體內即可。
林媽利說,除了這類嚴重致命疾病外,由於多數人不見得清楚自己是否有潛在疾病,因此親屬間緊急輸血,並不比已經檢驗過關的血液更安全。
植完牙未回診 男子滿嘴黑牙-Yahoo!奇摩新聞
植完牙未回診 男子滿嘴黑牙-Yahoo!奇摩新聞
植牙可不是植完就沒事了,台南有一名男子在七年前植牙後,就沒有再回診過,直到最近植牙脫落,逼不得已回去看醫生,才發現他的植牙,全都佈滿黑黑的組織,看起來好像刺刺的狼牙棒,醫生說這都是沒有回診檢查的後果。
這 黑黑髒髒,長的像可怕狼牙棒的刺刺物體,居然就長在黃姓男子的植牙裡,想起來還怕怕的,討厭看醫生的黃先生,七年前在下方門牙植入了六顆牙齒後,再也沒有 回到牙醫診所複診,就算牙齒會痛也是忍一忍就算了,結果這一忍,忍出了大麻煩,他發現右邊的三顆植牙開始鬆動,還發出惡臭,只好回到牙醫診所,當醫生把鬆 動植牙拔下來時,他嚇傻了眼。
本以為堅固的植牙變成這副德行,黑黑刺刺的組織爬滿了植體,上面還搖搖欲墜的黏著一顆植牙,怎麼會變成這樣, 醫生說這是慢性細菌感染,因為植牙後沒有回到診所做深層清潔,才會變成這麼嚴重的後果,現在黃先生不但之前做的植牙全毀,還要接受長期治療才能再植牙,醫 生也提醒民眾植牙,一定要回到診所檢查,要不然就會像黃先生一樣,花大錢植牙,卻換來滿口爛牙。(完整影音新聞請 見:http://news.cts.com.tw/cts/life/200912/200912290376947.html)
植完牙未回診 男子滿嘴黑牙
更新日期:
2009/12/29 16:46
這 黑黑髒髒,長的像可怕狼牙棒的刺刺物體,居然就長在黃姓男子的植牙裡,想起來還怕怕的,討厭看醫生的黃先生,七年前在下方門牙植入了六顆牙齒後,再也沒有 回到牙醫診所複診,就算牙齒會痛也是忍一忍就算了,結果這一忍,忍出了大麻煩,他發現右邊的三顆植牙開始鬆動,還發出惡臭,只好回到牙醫診所,當醫生把鬆 動植牙拔下來時,他嚇傻了眼。
本以為堅固的植牙變成這副德行,黑黑刺刺的組織爬滿了植體,上面還搖搖欲墜的黏著一顆植牙,怎麼會變成這樣, 醫生說這是慢性細菌感染,因為植牙後沒有回到診所做深層清潔,才會變成這麼嚴重的後果,現在黃先生不但之前做的植牙全毀,還要接受長期治療才能再植牙,醫 生也提醒民眾植牙,一定要回到診所檢查,要不然就會像黃先生一樣,花大錢植牙,卻換來滿口爛牙。(完整影音新聞請 見:http://news.cts.com.tw/cts/life/200912/200912290376947.html)
An ellipsis at the end of the parameter
An ellipsis at the end of the parameter specifications is used to specify that a function has a variable number of parameters. The number of parameters is equal to, or greater than, the number of parameter specifications.
The comma before the ellipsis is optional. In addition, a parameter declaration is not required before the ellipsis.
At least one parameter declaration, as well as a comma before the ellipsis, are both required in C.
int f(int, ...);
The comma before the ellipsis is optional. In addition, a parameter declaration is not required before the ellipsis.
At least one parameter declaration, as well as a comma before the ellipsis, are both required in C.
C: Ellipsis operator (…) : printf « Programming in Linux
C: Ellipsis operator (…) : printf « Programming in Linux
So the prototype of printf is
and depending on the next arguments of what we expect, we increment the pointer and increment it accordingly
Below is a simple code which shows how this can be done
C: Ellipsis operator (…) : printf
Posted on March 7, 2008 by John Samuel
For more updates, check Programming Insights.
Ever imagined how printf works, even though we are able to pass a number of arguments to it. If we design a function which takes two arguments and pass three parameters, we are bound to get this error “too many arguments to function”i.e., suppose we have a function
int fun2(int a, int b)and we call the function
fun2(2,3,4)we are sure to get the above error. So the question is how printf / scanf works with variable number of arguments? This is because C has a feature called ellipsis (…) by which you are able to pass variable number of arguments?
So the prototype of printf is
int printf(const char *str,...)But the next question is how then can we access the arguments in the function. This can be done by the power of pointers. Let’s take a pointer which points to the last argument before …
and depending on the next arguments of what we expect, we increment the pointer and increment it accordingly
Below is a simple code which shows how this can be done
int print(const char *str,...)
/*str has the number of integers passed*/
{
int i;
int num_count=atoi(str);
int *num=(int *)&str;
for(i=1;i<=num_count;i++)
printf("%d ",*(num+i));}
int print_num(int num_count,...)
/*num_count contains the number of integers passed*/
{
int i;
int *num=&num_count;
for(i=1;i<=num_count;i++)
printf("%d ",*(num+i));
}
int main()
{
print_num(3,2,3,4);
print("3",2,3,4);
}
For more updates, check Programming Insights.網際論壇 - 硬體技術交流 - [教學]CPU風扇的安裝方式[圖]。
網際論壇 - 硬體技術交流 - [教學]CPU風扇的安裝方式[圖]。
#1 [教學]CPU風扇的安裝方式[圖]。
一、將散熱膏擠出少許置於CPU的主體上,不宜過多或太少,當風扇壓置於CPU上時,利用風扇壓力將散熱膏而能夠覆蓋CPU的核心主體為標準。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">
二、將CPU風扇一邊扣片先行扣住SOCKET的一邊。
注意:CPU風扇扣片有方向性,正確安裝方向為先扣住CPU Socket沒有突出的一邊。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">
三、再安裝另一個扣片至CPU Socket上的固定勾上,如下圖所示。基本上風扇的設計會以容易安裝為考量,因此,後扣上扣片的一邊通常會有讓安裝者有施力的位置,以方便安裝。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">
四、當安裝完成後,必須檢查CPU風扇是否與CPU緊密連接,確定CPU與風扇間完全沒有間隙。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">
五、若是安裝順序或方向錯誤時,則CPU與CPU風扇無法確實密合,如下圖所示。此時CPU風扇沒有確實與CPU核心主體接觸,無法達到散熱效果,容易導 致CPU過熱而當機。因此必須將風扇拆下重裝,拆下時請特別注意,不當的施力會將CPU本體壓壞,導致CPU損毀而無法正常工作。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">
六、最後安裝CPU風扇的電源線,注意:不要讓電線纏住CPU風扇葉片,而導致風扇不運轉,使風扇失去作用。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">
七、另外一種可能安裝錯誤的情形:方向與順序都正確,但是沒有將風扇與CPU對齊,導致風扇的一邊壓在Socket上面,導致風扇沒有與CPU緊密接觸,這樣的安裝也會讓讓散熱效果打折,應該避免。應該確實將風扇移至CPU正上方,與第四點的安裝方式相同。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">
小D:若是風扇沒裝好,據說開機三次就掛了,本人剛好有一次燒壞CPU的紀錄!
#1 [教學]CPU風扇的安裝方式[圖]。
一、將散熱膏擠出少許置於CPU的主體上,不宜過多或太少,當風扇壓置於CPU上時,利用風扇壓力將散熱膏而能夠覆蓋CPU的核心主體為標準。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">二、將CPU風扇一邊扣片先行扣住SOCKET的一邊。
注意:CPU風扇扣片有方向性,正確安裝方向為先扣住CPU Socket沒有突出的一邊。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">三、再安裝另一個扣片至CPU Socket上的固定勾上,如下圖所示。基本上風扇的設計會以容易安裝為考量,因此,後扣上扣片的一邊通常會有讓安裝者有施力的位置,以方便安裝。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">四、當安裝完成後,必須檢查CPU風扇是否與CPU緊密連接,確定CPU與風扇間完全沒有間隙。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">五、若是安裝順序或方向錯誤時,則CPU與CPU風扇無法確實密合,如下圖所示。此時CPU風扇沒有確實與CPU核心主體接觸,無法達到散熱效果,容易導 致CPU過熱而當機。因此必須將風扇拆下重裝,拆下時請特別注意,不當的施力會將CPU本體壓壞,導致CPU損毀而無法正常工作。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">六、最後安裝CPU風扇的電源線,注意:不要讓電線纏住CPU風扇葉片,而導致風扇不運轉,使風扇失去作用。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">七、另外一種可能安裝錯誤的情形:方向與順序都正確,但是沒有將風扇與CPU對齊,導致風扇的一邊壓在Socket上面,導致風扇沒有與CPU緊密接觸,這樣的安裝也會讓讓散熱效果打折,應該避免。應該確實將風扇移至CPU正上方,與第四點的安裝方式相同。
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window';}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="if(this.resized) {window.open(this.src);}" border="0">小D:若是風扇沒裝好,據說開機三次就掛了,本人剛好有一次燒壞CPU的紀錄!
2009年12月19日 星期六
2009年重大科學發現 440萬年骷髏化石登榜首-Yahoo!奇摩新聞
2009年重大科學發現 440萬年骷髏化石登榜首-Yahoo!奇摩新聞
(法新社華盛頓17日電) 著名的「科學」(Science)期刊今天報導,2009年最重大的科學突破,就是發現了一具有440萬年歷史的骷髏化石,這也是已知人類最早的祖先。
這具叫做「雅蒂」(Ardi)的化石,榮登年度10大科學進展之首。上榜的還有發現月球上有水的存在,以及在實驗電子設備裡運用的超薄碳原子片。
「雅蒂」,或稱「拉密達猿人」(Ardipithecus ramidus),是人類學家長達15年辛苦研究的成果,這項發現在衣索比亞(Ethiopia)出土,讓我們對人類演化有更深入的了解。
「雅蒂」的歷史比前一個已知最古老骨骸「露西」(Lucy)要往前推120萬年,她的發現,破除了人類和現代人猿有直接相似性這項普遍迷思。
在「雅蒂」的骨骸、牙齒、骨盆和手腳發現的許多特性顯示,非洲黑猩猩雖然和人類有共同的祖先,但黑猩猩之後也經歷過許多演化。
「科學」期刊編輯艾伯茨(Bruce Alberts)說:「(雅蒂)改變了我們對早期人類演化的認知。」
這份期刊列出的重大發現,還包括透過美國國家航空暨太空總署(NASA)費米望遠鏡(Fermi)發現的新型脈衝星,其中一顆距離地球4600光年。
這項觀測成果幫助我們了解脈衝星的運作,以及它們對宇宙電磁輻射的貢獻。脈衝星是星體爆炸後,形成的快速旋轉、帶強烈磁場核心。
天體物理學家對這份10大科學進展榜單另有2項貢獻,包括NASA發現月球上有水的存在。
今年10月,NASA發射火箭,以時速9000公里的力道撞擊位於月球永久陰暗區、接近月球南極的凱布斯(Cabeus)隕石坑。
4分鐘之後,一具備有偵測儀器的太空船偵測到塵埃中帶有大量的水份。
此外,NASA還派遣太空人修復了哈伯太空望遠鏡(Hubble Space Telescope),提供空前的宇宙影像,獲得「科學」期刊高度讚揚。(譯者:中央社戴雅真)
2009年重大科學發現 440萬年骷髏化石登榜首
更新日期:
2009/12/18 10:05戴雅真
這具叫做「雅蒂」(Ardi)的化石,榮登年度10大科學進展之首。上榜的還有發現月球上有水的存在,以及在實驗電子設備裡運用的超薄碳原子片。
「雅蒂」,或稱「拉密達猿人」(Ardipithecus ramidus),是人類學家長達15年辛苦研究的成果,這項發現在衣索比亞(Ethiopia)出土,讓我們對人類演化有更深入的了解。
「雅蒂」的歷史比前一個已知最古老骨骸「露西」(Lucy)要往前推120萬年,她的發現,破除了人類和現代人猿有直接相似性這項普遍迷思。
在「雅蒂」的骨骸、牙齒、骨盆和手腳發現的許多特性顯示,非洲黑猩猩雖然和人類有共同的祖先,但黑猩猩之後也經歷過許多演化。
「科學」期刊編輯艾伯茨(Bruce Alberts)說:「(雅蒂)改變了我們對早期人類演化的認知。」
這份期刊列出的重大發現,還包括透過美國國家航空暨太空總署(NASA)費米望遠鏡(Fermi)發現的新型脈衝星,其中一顆距離地球4600光年。
這項觀測成果幫助我們了解脈衝星的運作,以及它們對宇宙電磁輻射的貢獻。脈衝星是星體爆炸後,形成的快速旋轉、帶強烈磁場核心。
天體物理學家對這份10大科學進展榜單另有2項貢獻,包括NASA發現月球上有水的存在。
今年10月,NASA發射火箭,以時速9000公里的力道撞擊位於月球永久陰暗區、接近月球南極的凱布斯(Cabeus)隕石坑。
4分鐘之後,一具備有偵測儀器的太空船偵測到塵埃中帶有大量的水份。
此外,NASA還派遣太空人修復了哈伯太空望遠鏡(Hubble Space Telescope),提供空前的宇宙影像,獲得「科學」期刊高度讚揚。(譯者:中央社戴雅真)
2009年11月21日 星期六
[PC] Fallout 3 console指令 - 金手指、密技 - 遊戲情報討論 - MimiP2P - Powered by Discuz!
[PC] Fallout 3 console指令 - 金手指、密技 - 遊戲情報討論 - MimiP2P - Powered by Discuz!
[PC] Fallout 3 console指令
以下是我自己整理出來的各個指令,中文說明是我原創的,比較常用或好用的標紅色。遊戲中隨時可以按~叫出console(控制台)畫面,此時可以用滑鼠選擇畫面上的人物或物體,再配合各種指令,自行修改遊戲內容。
另外,/ 表示有其他輸入方式,<>或[]之類的括號不用打,只是提醒你那裏面的數據不是固定的。
player.setlevel #
直接設定主角等級至#,但不會獲得perk之類的額外獎勵。
modpca (s.p.e.c.i.a.l) #
增加所選擇的屬性點數,例如 : lmodpca luck 3 ->會使luck從5增加到8。
tgm
無敵模式
tcl
主角不會和3D物件碰撞 (例如主角卡在縫隙中的時候可以穿過地形)。
tmm 1
顯示所有地圖地標。
player.setav #
設定屬性至1-10。
player.setav #
設定某技能增加的點數 #。
player.additem 0000000F "XXX"
直接設定瓶蓋(錢)的數量至XXX。如果知道其他物品ID,也可以直接增加某物品。
addspecialpoints #
增加#的屬性點數。
setspecialpoints #
設定可用的屬性點數至#。
rewardKarma #
得到功德點數#。可以為負數。
getXPfornextlevel
顯示到下個等級還需要的經驗值。(打那麼多字不如自己算…)
GetQuestCompleted
直接完成目前任務。
tfc
自由視角。
tm
開關畫面上的HUD (抓圖用)。
unlock
解開在console畫面選擇的鎖。
movetoqt
玩家直接移動到目前任務標記的點。
advlevel
直接升一級。
rewardxp xxx
得到xxx經驗值。
Kill
殺死console畫面中選擇的角色。
showracemenu
開啟主角臉型調整選單。可以隨時改臉型。
player.modav skill #
設定某技能基本的點數。
player.modav carryweight #
改變主角負重量。
player.modav actionpoints #
改變主角AP值。
DisableAllMines
解除地雷。
SexChange
改變主角性別。
ResetQuest
重新啟動任務。
CompleteAllObjectives / CompleteQuest
完成任務目標。
player.modScale <1>
改變主角模型大小。1 = 巨人 ; -1 =正常
ShowNameMenu
修改主角名字。
player.ForceAV
直接修改某技能至特定的數據。
EnablePlayerControls
動畫中當主角被鎖定時仍能夠控制主角。
player.PlaceAtMe
在主角身旁叫出特定物件。當然前提是要先知道那物件的ID,如 000000A(開鎖器) 或6a772(Dogmeat)
CloseAllMenus / cam
關閉選單。指令打太兇出錯時可能會用到。
MoveToQuestTarget / movetoqt
移動到任務地點。
resurrect
復活console畫面中選擇的角色。
set timescale to #
改變遊戲中的時間流動速度。預設值未知,可能是10…
TT
開關樹叢。
TG
開關草地。
SetEssential 1
設定某NPC為重要角色(殺不死)。如Dogmeat ID為6a772,則打setessential 6a772 1。
Killall
殺光所處環境中所有角色。
SetPCCanUsePowerArmor 1
使主角不用經過訓練就能穿動力裝甲。
setgs iMaxCharacterLevel ###
設定主角能升到的最高等級###。
save fred 1
開啟一份文字檔,裡面紀錄所有的物件,包括物品、NPC的ID等資料。每個存檔所產生的文字檔都不同。
setgs fJumpHeightMin #
改變主角跳躍高度。預設值為64。
player.removeitem "XXX"
移除主角身上特定物品。
Removeallitems
移除console畫面中選擇的角色所有裝備(包括孩童)。
TWF
開關wirefram模式。
GetPos X
查看console畫面中選擇物件的X軸座標,可改為Y或Z。
SetPos X
設定console畫面中選擇物件的X軸座標,可改為Y或Z。
showinventory
顯示console畫面中選擇角色的所有物品清單及ID。
EquipItem
裝備特定裝備(必須有在角色身上)。配合showinventory可以自由幫隊友換衣服。
UnEquipItem
卸除特定裝備。該物品必須在角色身上。
agerace #
改變選擇角色的外觀年齡。1=老化,-1=年輕化。可以看各角色長大或小時後的樣子。
player.agerace #
改變主角外觀年齡。1=老化,-1=年輕化。
setgs fMoveRunMult #
改變移動速度至#。預設值是4,所有人都會變,不能僅限定某角色,沒啥用。
SetBarterGold [amount]
設定交易金額。
coc [Cell ID]
移動到指定的房間內。
tcai
僅開關戰鬥AI,關閉會使敵人處在原地不會反擊。
tai
開關遊戲中AI。
QQQ
直接離開遊戲。
save [name]
建立特定存檔名稱並存檔。
load [name]
讀取存檔…Orz
PRID [name]
選擇某物件。例如第一人稱視角下,用PRID player可選擇主角。
tsb [number]
在螢幕上顯示血跡特效。0=沒有血跡。
setscale #
改變物件大小。#=-10~10,預設值為1。惡搞用…
coc megatoncommonhouse
直接回到Megaton的common house。
coc testqaitems
移動至神秘房間,擁有所有物品。
player.moveto #
移動到指定的NPC。
player.setav damageresist ##
設定主角抵抗物理攻擊的程度(肉搏或槍擊傷害)。##為百分比,從0~100,100%為完全不受傷害。
player.setav critchance ##
設定主角造成critical傷害的機率。##為百分比0~100。
player.setav radresist ##
設定主角抵抗輻射汙染的程度,##為百分比。
player.setav fireresist ##
設定主角抵抗火燒傷的程度,##為百分比。
player.setav poisonresist ##
設定主角抵抗毒素的程度,##為百分比。
player.setav meleedamage ##
設定主角近戰武器攻擊的基本傷害,##任意。
player.setav unarmeddamage ##
設定主角徒手攻擊的基本傷害,##任意。
exit vats
看製作名單,回到主選單。
Setownership
把物品所有權歸給主角。
Resethealth
回復選擇角色的HP。
player.modav health #
改變主角HP上限。
另外,/ 表示有其他輸入方式,<>或[]之類的括號不用打,只是提醒你那裏面的數據不是固定的。
player.setlevel #
直接設定主角等級至#,但不會獲得perk之類的額外獎勵。
modpca (s.p.e.c.i.a.l) #
增加所選擇的屬性點數,例如 : lmodpca luck 3 ->會使luck從5增加到8。
tgm
無敵模式
tcl
主角不會和3D物件碰撞 (例如主角卡在縫隙中的時候可以穿過地形)。
tmm 1
顯示所有地圖地標。
player.setav
設定屬性至1-10。
player.setav
設定某技能增加的點數 #。
player.additem 0000000F "XXX"
直接設定瓶蓋(錢)的數量至XXX。如果知道其他物品ID,也可以直接增加某物品。
addspecialpoints #
增加#的屬性點數。
setspecialpoints #
設定可用的屬性點數至#。
rewardKarma #
得到功德點數#。可以為負數。
getXPfornextlevel
顯示到下個等級還需要的經驗值。(打那麼多字不如自己算…)
GetQuestCompleted
直接完成目前任務。
tfc
自由視角。
tm
開關畫面上的HUD (抓圖用)。
unlock
解開在console畫面選擇的鎖。
movetoqt
玩家直接移動到目前任務標記的點。
advlevel
直接升一級。
rewardxp xxx
得到xxx經驗值。
Kill
殺死console畫面中選擇的角色。
showracemenu
開啟主角臉型調整選單。可以隨時改臉型。
player.modav skill #
設定某技能基本的點數。
player.modav carryweight #
改變主角負重量。
player.modav actionpoints #
改變主角AP值。
DisableAllMines
解除地雷。
SexChange
改變主角性別。
ResetQuest
重新啟動任務。
CompleteAllObjectives / CompleteQuest
完成任務目標。
player.modScale <1>
改變主角模型大小。1 = 巨人 ; -1 =正常
ShowNameMenu
修改主角名字。
player.ForceAV
直接修改某技能至特定的數據。
EnablePlayerControls
動畫中當主角被鎖定時仍能夠控制主角。
player.PlaceAtMe
在主角身旁叫出特定物件。當然前提是要先知道那物件的ID,如 000000A(開鎖器) 或6a772(Dogmeat)
CloseAllMenus / cam
關閉選單。指令打太兇出錯時可能會用到。
MoveToQuestTarget / movetoqt
移動到任務地點。
resurrect
復活console畫面中選擇的角色。
set timescale to #
改變遊戲中的時間流動速度。預設值未知,可能是10…
TT
開關樹叢。
TG
開關草地。
SetEssential
設定某NPC為重要角色(殺不死)。如Dogmeat ID為6a772,則打setessential 6a772 1。
Killall
殺光所處環境中所有角色。
SetPCCanUsePowerArmor 1
使主角不用經過訓練就能穿動力裝甲。
setgs iMaxCharacterLevel ###
設定主角能升到的最高等級###。
save fred 1
開啟一份文字檔,裡面紀錄所有的物件,包括物品、NPC的ID等資料。每個存檔所產生的文字檔都不同。
setgs fJumpHeightMin #
改變主角跳躍高度。預設值為64。
player.removeitem
移除主角身上特定物品。
Removeallitems
移除console畫面中選擇的角色所有裝備(包括孩童)。
TWF
開關wirefram模式。
GetPos X
查看console畫面中選擇物件的X軸座標,可改為Y或Z。
SetPos X
設定console畫面中選擇物件的X軸座標,可改為Y或Z。
showinventory
顯示console畫面中選擇角色的所有物品清單及ID。
EquipItem
裝備特定裝備(必須有在角色身上)。配合showinventory可以自由幫隊友換衣服。
UnEquipItem
卸除特定裝備。該物品必須在角色身上。
agerace #
改變選擇角色的外觀年齡。1=老化,-1=年輕化。可以看各角色長大或小時後的樣子。
player.agerace #
改變主角外觀年齡。1=老化,-1=年輕化。
setgs fMoveRunMult #
改變移動速度至#。預設值是4,所有人都會變,不能僅限定某角色,沒啥用。
SetBarterGold [amount]
設定交易金額。
coc [Cell ID]
移動到指定的房間內。
tcai
僅開關戰鬥AI,關閉會使敵人處在原地不會反擊。
tai
開關遊戲中AI。
QQQ
直接離開遊戲。
save [name]
建立特定存檔名稱並存檔。
load [name]
讀取存檔…Orz
PRID [name]
選擇某物件。例如第一人稱視角下,用PRID player可選擇主角。
tsb [number]
在螢幕上顯示血跡特效。0=沒有血跡。
setscale #
改變物件大小。#=-10~10,預設值為1。惡搞用…
coc megatoncommonhouse
直接回到Megaton的common house。
coc testqaitems
移動至神秘房間,擁有所有物品。
player.moveto #
移動到指定的NPC。
player.setav damageresist ##
設定主角抵抗物理攻擊的程度(肉搏或槍擊傷害)。##為百分比,從0~100,100%為完全不受傷害。
player.setav critchance ##
設定主角造成critical傷害的機率。##為百分比0~100。
player.setav radresist ##
設定主角抵抗輻射汙染的程度,##為百分比。
player.setav fireresist ##
設定主角抵抗火燒傷的程度,##為百分比。
player.setav poisonresist ##
設定主角抵抗毒素的程度,##為百分比。
player.setav meleedamage ##
設定主角近戰武器攻擊的基本傷害,##任意。
player.setav unarmeddamage ##
設定主角徒手攻擊的基本傷害,##任意。
exit vats
看製作名單,回到主選單。
Setownership
把物品所有權歸給主角。
Resethealth
回復選擇角色的HP。
player.modav health #
改變主角HP上限。
《辐射3(Fallout 3)》武器弹药防具书籍代码(中文) _ 游民星空 GamerSky.com
《辐射3(Fallout 3)》武器弹药防具书籍代码(中文) _ 游民星空 GamerSky.com
弹药
.308 (.308 Caliber Round) 0006B53C 不多说了
.32 (.32 Caliber Round) 000207F7 不多说了
.44 (.44 Round Magnum) 0002937E 不多说了
10毫米 (10mm Round) 00004241 不多说了
5.56毫米 (5.56mm Round) 00078CC4 不多说了
5毫米 (5mm Round) 0006B53D 不多说了
外星能量电池(Alien Powercell) 00029364 外星枪
BB弹(BB - Ammo) 0002935B 不多说了
飞镖(Dart) 00047419 毒镖枪
电子充能包(Electron Charge Pack) 000615AF 镭射加特林
能量电池(Energy Cell) 00020772 镭射手枪
燃料(Flamer Fuel) 00029371 火焰喷射器
迷魂枪能量电池(Mesmetron Power Cell ) 0006A80D 迷魂枪
聚合电池(Microfusion Cell) 00078CC3 镭射步枪
迷你核弹(Mini Nuke ) 00020799 不多说了
导弹(Missile) 000B8791 不多说了
钉子(Railway Spikes) 00029384 不多说了
散弹(Shotgun Shell) 00028EEA 不多说了
索尼克能量包(Sonic Energy) 00056634 这个不知道
装甲
动力头盔 00014C08
动力装甲 00014E13
牛皮外套 00018DE5
英克雷科学家外套 0001B5BD
荒地流浪者外套 0001BA00
彩色眼镜 0001C295
避难所实验室外套 0001CBDC
101避难所保安装甲 0001CBDD
僵尸面具 0001DC1C
战前休闲服 0001EA6D
战斗装甲 0001EA6D
皮革装甲 00020423
战斗头盔 00020426
执法者风衣 00020429
隧道蛇外套 0002042E
掠夺者带刺装甲 0002042F
掠夺者变态头盔 00020432
游骑兵战役装甲 00023030
柳钉城保安头盔 00023030
柳钉城保安装甲 000239CC
被放逐者动力装甲 00023B62
屁屁男孩手套 00025B83
侦查装甲头盔 00028EAD
童帽 00028FF8
战前棒球帽 00028FF9
眼镜帽 00028FFA
粗糙商人外套 0002B385
麦克格雷迪的头盔 0002D11B
奴隶帽 0002F563
侦查装甲 0003064D
放辐射外衣 00033078
高级放辐射外衣 0003307A
掠夺者虐待装甲 0003307C
掠夺者荒地装甲 0003307D
掠夺者爆破装甲 0003307E
金属盔甲 0003307F
金属头盔 00033080
曲棍球面具 00033598
棒球童帽 000340C1
战前童装 000340C3
战前童装(脏) 000340C4
战前帽子 000340C8
战前软帽 000340CD
战前休闲服(脏) 000340CF
战前春装 000340D0
战前春装(脏) 000340D1
中国伞兵战斗服 000340D2
中国伞兵战斗服(脏) 000340D3
实验室技师外套 000340D7
科学家外套 000340D9
李博士的外套 000340DA
英克雷军官统一外套 000340DE
儿童警察帽子 000340E1
儿童地下老鼠外套 000340E4
性感睡衣 000340E6
麦克格雷迪的外套 000340E7
绿洲长袍 000340E8
绿洲村民长袍 000340E9
红色紧身衣 000340EA
红色头巾 000340EB
87避难所紧身衣 000340ED
112避难所紧身衣 000340EF
101
避难所紧身儿童衣 000340F2
破烂外套 000340F8
下阶军官外套 000340F9
荒地侦查者外套 000340FA
荒地运动外套 000340FB
一品脱大小的猛砍面具 000340FC
弹药
.308 (.308 Caliber Round) 0006B53C 不多说了
.32 (.32 Caliber Round) 000207F7 不多说了
.44 (.44 Round Magnum) 0002937E 不多说了
10毫米 (10mm Round) 00004241 不多说了
5.56毫米 (5.56mm Round) 00078CC4 不多说了
5毫米 (5mm Round) 0006B53D 不多说了
外星能量电池(Alien Powercell) 00029364 外星枪
BB弹(BB - Ammo) 0002935B 不多说了
飞镖(Dart) 00047419 毒镖枪
电子充能包(Electron Charge Pack) 000615AF 镭射加特林
能量电池(Energy Cell) 00020772 镭射手枪
燃料(Flamer Fuel) 00029371 火焰喷射器
迷魂枪能量电池(Mesmetron Power Cell ) 0006A80D 迷魂枪
聚合电池(Microfusion Cell) 00078CC3 镭射步枪
迷你核弹(Mini Nuke ) 00020799 不多说了
导弹(Missile) 000B8791 不多说了
钉子(Railway Spikes) 00029384 不多说了
散弹(Shotgun Shell) 00028EEA 不多说了
索尼克能量包(Sonic Energy) 00056634 这个不知道
装甲
动力头盔 00014C08
动力装甲 00014E13
牛皮外套 00018DE5
英克雷科学家外套 0001B5BD
荒地流浪者外套 0001BA00
彩色眼镜 0001C295
避难所实验室外套 0001CBDC
101避难所保安装甲 0001CBDD
僵尸面具 0001DC1C
战前休闲服 0001EA6D
战斗装甲 0001EA6D
皮革装甲 00020423
战斗头盔 00020426
执法者风衣 00020429
隧道蛇外套 0002042E
掠夺者带刺装甲 0002042F
掠夺者变态头盔 00020432
游骑兵战役装甲 00023030
柳钉城保安头盔 00023030
柳钉城保安装甲 000239CC
被放逐者动力装甲 00023B62
屁屁男孩手套 00025B83
侦查装甲头盔 00028EAD
童帽 00028FF8
战前棒球帽 00028FF9
眼镜帽 00028FFA
粗糙商人外套 0002B385
麦克格雷迪的头盔 0002D11B
奴隶帽 0002F563
侦查装甲 0003064D
放辐射外衣 00033078
高级放辐射外衣 0003307A
掠夺者虐待装甲 0003307C
掠夺者荒地装甲 0003307D
掠夺者爆破装甲 0003307E
金属盔甲 0003307F
金属头盔 00033080
曲棍球面具 00033598
棒球童帽 000340C1
战前童装 000340C3
战前童装(脏) 000340C4
战前帽子 000340C8
战前软帽 000340CD
战前休闲服(脏) 000340CF
战前春装 000340D0
战前春装(脏) 000340D1
中国伞兵战斗服 000340D2
中国伞兵战斗服(脏) 000340D3
实验室技师外套 000340D7
科学家外套 000340D9
李博士的外套 000340DA
英克雷军官统一外套 000340DE
儿童警察帽子 000340E1
儿童地下老鼠外套 000340E4
性感睡衣 000340E6
麦克格雷迪的外套 000340E7
绿洲长袍 000340E8
绿洲村民长袍 000340E9
红色紧身衣 000340EA
红色头巾 000340EB
87避难所紧身衣 000340ED
112避难所紧身衣 000340EF
101
避难所紧身儿童衣 000340F2
破烂外套 000340F8
下阶军官外套 000340F9
荒地侦查者外套 000340FA
荒地运动外套 000340FB
一品脱大小的猛砍面具 000340FC
訂閱:
文章 (Atom)