在C编程语言中,我的理解是变量只能在代码块的开头定义,而变量将具有声明它的块的范围.考虑到这一点,我想知道它是否是被认为是人为地创建新范围的不良做法,如下例所示:
void foo()
{
... Do some stuff ...
if(TRUE)
{
char a;
int b;
... Do some more stuff ...
}
... Do even more stuff ...
}
Run Code Online (Sandbox Code Playgroud)
假设在宏定义中将TRUE设置为1,这段代码是否会被认为是"好代码",或者是否会使经验丰富的程序员在想到它时感到畏缩?
感谢您的输入!
编辑:为了回应一些答案,我正在使用的代码需要与一些非常古老的遗留系统一起工作.虽然按照C99的假设进行操作会很好,但我们真的无法保证他们会拥有它.
Phi*_*lds 51
你甚至不需要if语句.您可以使用{}创建块
那应该是一个单独的功能.
这里的例子:
#include <stdio.h>
int
main(int argc, char **argv) {
int i = 0;
{
int i = 10;
printf("%d\n", i);
}
printf("%d\n", i);
}
Run Code Online (Sandbox Code Playgroud)
Geo*_*rge 16
据我所知,你可以创建一个没有if的范围.
像这样使用大括号:
{
int x;
}
Run Code Online (Sandbox Code Playgroud)
我推荐反对
if (TRUE)
Run Code Online (Sandbox Code Playgroud)
因为它阻碍了可读性.
您可能想要为该范围创建一个新函数.
如果它确实需要拥有它自己的范围,那么无论如何它可能是一个单独的逻辑功能.
因为你可以在没有if的情况下制作示波器块,这是一个更好的主意.
void foo() {
... Do some stuff ...
{
char a;
int b;
... Do some more stuff ...
}
... Do even more stuff ...
}
Run Code Online (Sandbox Code Playgroud)
首先,新块不需要是if块.它可能只是由大括号包围的代码段,如下所示:
void foo() {
... Do some stuff ...
{
char a;
int b;
... Do some more stuff ...
}
... Do even more stuff ...
}
Run Code Online (Sandbox Code Playgroud)
其次,在任何符合C标准的现代C编译器(我认为C99)中,您可以在块中的任何位置声明变量,因此您根本不需要创建新块.
| 归档时间: |
|
| 查看次数: |
25250 次 |
| 最近记录: |