2012-07-29 49 views
-7

我想創建可以運行得很快的代碼。 爲了做到這一點,我在需要時將一些變量初始化。 例如:(我不能更改標籤\轉到部分,我必須使用它針對這種情況)C++破壞手冊

bool Func(bool BooleanParameter) { 
    if (BooleanParameter) 
     goto _true; 
    else 
     goto _false; 
_true: 
    string str; //Some code after that one that does with this variable 
    return false; 
_false: 
    return true; //Exception because str doesn't initialized 
} 

但有例外,因爲有沒有辦法不初始化變量和變量在最後破壞。

+6

不要使用goto語句。這絕對沒有進展。 – poitroae 2012-07-29 13:40:13

+5

「有天賦的才華」是什麼意思? – 2012-07-29 13:40:39

+2

你憑藉'具有天賦'的才能?聽起來有點像搶先優化... – Burkhard 2012-07-29 13:40:42

回答

6

爲什麼不乾脆:

bool Func(bool booleanParameter) 
{ 
    if (booleanParameter) 
    { 
     string str; 
     // ... 
     return false; 
    } 
    return true; 
} 

這似乎達到預期的效果,而不使用可疑的goto

+0

我需要代碼中的標籤部分。 (第二次編輯前) – 2012-07-29 13:49:17

+4

@SuperFile不,你做**不***。保羅的代碼同樣有效。這是有效的,而你的不是。 (但是我會反轉條件來減少代碼的縮進級別。) – 2012-07-29 13:49:45

+0

@KonradRudolph我需要這個,因爲我創建了使用標籤來使代碼簡單的宏。我發佈的代碼只是這些宏所做的一個例子。 – 2012-07-29 13:53:05

1

嘗試將範圍字符串這樣

_true: 
    { 
    string str; 
    return false; 
    } 
+4

我覺得你忘了'perf與天才' – Shahbaz 2012-07-29 13:43:59

+0

我需要代碼中的標籤部分。(編輯第二前) – 2012-07-29 13:50:15

+2

您能詳細說明*爲什麼*您編輯gotos,超級文件? – gspr 2012-07-29 13:51:16