gpt4 book ai didi

c - 微软 C 编译器 : Inline variable declaration?

转载 作者:太空狗 更新时间:2023-10-29 16:44:30 26 4
gpt4 key购买 nike

我在 Visual Studio 2010 中编写 C。编译器似乎不想让我使用内联变量声明。以下代码会产生错误:

unsigned int fibonacci_iterative(unsigned int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}

unsigned int prev_prev = 0; // error
unsigned int prev = 1; // error
unsigned int next = 0; // error
for (int term_number = 0; term_number < n; term_number++) {
unsigned int temp = prev_prev + prev;
prev = next;
prev_prev = prev;
next = temp;
}

return next;
}

错误:

error C2143: syntax error : missing';' before 'type'

error C2143: syntax error : missing';' before 'type'

error C2143: syntax error : missing';' before 'type'

为什么会这样?有没有设置让编译器不那么严格?

最佳答案

在 C89 中不允许在非声明之后放置声明,尽管在 C++ 和 C99 中是允许的(尽管 MSVC 仍然不支持 C99)。

在C89中,你可以通过使用嵌套 block 实现类似的效果:

unsigned int fibonacci_iterative(unsigned int n) {
if (...) {
}

{
unsigned int prev_prev = 0;
unsigned int prev = 1;
unsigned int next = 0;
...
}
}

关于c - 微软 C 编译器 : Inline variable declaration?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2170351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com