我想使用这段代码(来自我的上一个问题(感谢Adam)),
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
我的情况怎么办?我没有计划......
谢谢,抱歉我的英语不好。
答案 0 :(得分: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 ....
}
答案 1 :(得分:0)
这个函数看起来很好,你可能在这个函数之前错过了代码中的结束}
吗?
答案 2 :(得分:0)
您可能将其粘贴到方法或主要功能中!确保将代码块放在任何其他代码块之外。
所以,如果你有主要的地方:
int main(int argc, char **argv){
//blah
}
确保将代码置于其上方或下方:
bool AllDigitsIdentical(int number){
//blah
}
不要将它放在主函数(或任何其他方法)的{或}之间