2010-01-03 53 views
0

我想利用這個代碼(從我的最後一個問題(感謝亞當)),「嵌套功能被禁用,則使用-fnested-功能重新啓用」

bool AllDigitsIdentical(int number) 
{ 
    int lastDigit = number % 10; 
    number /= 10; 
    while(number > 0) 
    { 
     int digit = number % 10; 
     if(digit != lastDigit) 
      return false; 
     number /= 10; 
    } 

    return true; 
} 

但是編譯器只是說在第二行}:

Nested functions are disabled, use -fnested-functions to re-enable 

我能做些什麼嗎?我沒有計劃......

謝謝,對不起我的英語不好。

回答

1

你不會碰巧有這樣的事情:

- (void) someMethod 
{ 

    bool AllDigitsIdentical(int number) 
    { 
     int lastDigit = number % 10; 
     number /= 10; 
     while(number > 0) 
     { 
      int digit = number % 10; 
      if(digit != lastDigit) 
       return false; 
      number /= 10; 
     } 

     return true; 
    } 

} 

也就是說,你必須實現的方法的範圍內聲明的(雖然會出現一個函數內聲明的函數相同的問題)的功能。

總之,不要那樣做。它不被支持,GCC實現它的手段被認爲是一個安全漏洞(IIRC)。外

移動它:

bool AllDigitsIdentical(int number) 
{ 
    int lastDigit = number % 10; 
    number /= 10; 
    while(number > 0) 
    { 
     int digit = number % 10; 
     if(digit != lastDigit) 
      return false; 
     number /= 10; 
    } 

    return true; 
} 


- (void) someMethod 
{ 

    .... call the function here .... 
} 
0

這個功能看起來不錯,有沒有可能你錯過了關閉}的代碼之前這個函數?

+0

我敢肯定的是,我沒有錯過函數之前關閉}。 – Flocked 2010-01-03 06:20:13

0

您可能已將其粘貼到方法或主要功能中!確保代碼的夾頭放在其他任何代碼塊之外。

所以如果你有主的位置:

int main(int argc, char **argv){ 
    //blah 
} 

確保你把這些代碼高於或低於它,像這樣:

bool AllDigitsIdentical(int number){ 
    //blah 
} 

不要將其放在其間的的{或}主要功能(或任何其他方法)

+0

不,我沒有把代碼放入函數中。 – Flocked 2010-01-03 06:23:22

+0

那你爲什麼接受你說的答案! – micmoo 2010-01-03 17:38:20