gpt4 book ai didi

c - 当我在 IF 体内声明变量时有什么缺点吗?

转载 作者:行者123 更新时间:2023-11-30 15:03:05 24 4
gpt4 key购买 nike

我在一个函数中拥有该功能,该函数封装在一个 #ifdef block 中,该 block 附加了一个 if() 语句:

int myfunction(void) {
int condition = 0;
#ifdef USE_WHATEVER
int othervar = 0;
#endif /* USE_WHATEVER */
/* some code */
#ifdef USE_WHATEVER
if( condition ) {
othervar++;
/* do other things with othervar */
}
#endif /* USE_WHATEVER */

变量othervar仅在#ifdef block 内使用。由于整个 #ifdef block 是一个 if 语句,因此我可以将 othervar 的声明拉到 if block 内:

int myfunction(void) {
int condition = 0;
/* some code */
#ifdef USE_WHATEVER
if( condition ) {
int othervar = 0;
othervar++;
/* do other things with othervar */
}
#endif /* USE_WHATEVER */

对我来说,这比第一个示例干净得多。但是,这样做有什么缺点(性能等)吗?

最佳答案

在 c89 中,变量只能在 block 的开头声明。一些 ppl/编码标准会将所有变量声明放在函数的顶部,就像您在这里看到的那样。但是,可以在任何 block 的开头声明变量。

您需要考虑othervar的范围。如果它仅在 if block 内使用,则可以安全地将声明移动到 if block 的开头。

不应该有任何性能缺陷。编译器不太可能为这两种情况生成完全相同的代码。

关于c - 当我在 IF 体内声明变量时有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40840508/

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