当前位置:  开发笔记 > 程序员 > 正文

如果(TRUE)在C中是个好主意吗?

如何解决《如果(TRUE)在C中是个好主意吗?》经验,为你挑选了6个好方法。

在C编程语言中,我的理解是变量只能在代码块的开头定义,而变量将具有声明它的块的范围.考虑到这一点,我想知道它是否是被认为是人为地创建新范围的不良做法,如下例所示:

void foo()
{
     ... Do some stuff ...

     if(TRUE)
     {
         char a;
         int b;

         ... Do some more stuff ...
     }

     ... Do even more stuff ...
 }

假设在宏定义中将TRUE设置为1,这段代码是否会被认为是"好代码",或者是否会使经验丰富的程序员在想到它时感到畏缩?

感谢您的输入!

编辑:为了回应一些答案,我正在使用的代码需要与一些非常古老的遗留系统一起工作.虽然按照C99的假设进行操作会很好,但我们真的无法保证他们会拥有它.



1> Philip Reyno..:

你甚至不需要if语句.您可以使用{}创建块

那应该是一个单独的功能.

这里的例子:

#include 

int
main(int argc, char **argv) {
    int i = 0;
    {
        int i = 10;
        printf("%d\n", i);
    }
    printf("%d\n", i);
}


在C++(而不是C)中,这被广泛使用.一个流行的例子是互斥锁的锁类,它将互斥锁锁定在它的构造函数中,并在它的析构函数中解锁它.在堆栈上创建锁定变量然后使用与块相同的范围保护关键部分.
范围界定是一件好事,我也倾向于使用它.使用相同名称隐藏变量..不是那么多;)

2> George..:

据我所知,你可以创建一个没有if的范围.

像这样使用大括号:

{
    int x;

}

我推荐反对

if (TRUE)

因为它阻碍了可读性.


特别是如果你#define TRUE 0

3> Lars Mæhlum..:

您可能想要为该范围创建一个新函数.
如果它确实需要拥有它自己的范围,那么无论如何它可能是一个单独的逻辑功能.


不必要.我经常遇到需要一些高度局部变量(具有一个很好的助记符名称)来保持一些中间值只有几行.通过使用嵌套范围,您可以明确其预期(限制)使用.

4> chaos..:

因为你可以在没有if的情况下制作示波器块,这是一个更好的主意.

void foo() {
     ... Do some stuff ...
     {
         char a;
         int b;
         ... Do some more stuff ...
     }
     ... Do even more stuff ...
}



5> starblue..:

请注意,在C99中,允许在块的中间声明局部变量.

C99是1999年的C标准版本; 大多数现代C编译器都支持它.



6> Avi..:

首先,新块不需要是if块.它可能只是由大括号包围的代码段,如下所示:

void foo() {
 ... Do some stuff ...

 {
     char a;
     int b;

     ... Do some more stuff ...
 }

 ... Do even more stuff ...
}

其次,在任何符合C标准的现代C编译器(我认为C99)中,您可以在块中的任何位置声明变量,因此您根本不需要创建新块.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有