[英]What does c++ static keyword do with braces?
我發現這個代碼在某處,perlin噪聲發生器,我想:
static {
for(int i=0; i<512; i++) perm[i]=p[i & 255];
}
靜電有什么作用? 它在很多其他地方也被垃圾郵件發送了......代碼實際上是用靜態{}構建的。 我丟失了原來的代碼,所以這是我唯一的東西,但它就像上面的代碼:那里沒有變量聲明,這就是為什么我沒有得到它。
我認為這是Java,而不是C ++,這意味着它是一個靜態初始化塊 。
我的猜測是它實際上是java代碼和java靜態塊。 基本上,當初始化靜態變量時,或多或少地執行的塊。 (當加載類時,但實際上我還沒准備好回答標記為java的問題)。
MSDN上的static關鍵字文檔說明它可以在以下情況下使用:
此處未說明使用static
關鍵字聲明本地范圍 ,因此無效。
如果你試圖在函數體中寫它:
void foo(){
static{
int i = 0;
}
}
它將導致“錯誤C2143:語法錯誤:缺少';' 在'{'之前,因為預期變量聲明。 如果你替換static{
with static;{
,static keyword被忽略,那么你的代碼就變成了可編譯的,但是編譯器仍會警告你: “警告C4091:'static':當沒有聲明變量時,在'int'的左邊忽略” 。
如果你試圖在函數體之外寫它,它將導致“錯誤C2447:'{':缺少函數頭(舊式正式列表?)”因為函數聲明是預期的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.