c - 函数局部范围内变量的重复标识符

标签 c variables function-pointers identifier

所以,这是我 friend 的学生的代码......

#include <stdio.h>

int main(){
    int hours;
    int take_one_number(void);{
        scanf("%d",&hours);
    }
    int minutes;
    int take_one_number(void);{

        scanf("%d",&minutes);
    }
    int seconds;
    int take_one_number(void);{

        scanf("%d",&seconds);
    }
    int all;
    printf("%d",all=hours*3600+minutes*60+seconds);
    return all;

}

好吧,它……编译……并且……嗯,工作……按照老师的要求……

我的问题:如果我没理解错的话,take_one_number 这里定义了一个变量来存储一个函数指针。为什么 GCC 和 LLVM 都没有提示这些定义中的重复标识符?

最佳答案

函数 take_one_number 声明了 3 次,但从未定义。在每种情况下,;在 (void) 结束声明之后。 scanf 语句只是 main() 内部的常规语句,被无意义的范围包围{}

关于c - 函数局部范围内变量的重复标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15182267/

相关文章:

尝试通过指针修改常量变量时​​崩溃

jquery - 在 jquery 中将变量 N​​umber 添加到 div 位置?

c - 如何在C中调用Rust函数?

java - 从 JNI 调用函数指针

c - 是否只使用函数指针来实现回调?

c - SDL2 : getting segmentation fault with TTF_RenderText after some time?

c - C 中的字符串分词器

c - 为什么 -Winit-self 与 -Wuninitialized 分开

linux - 从外部文件为多个 linux 脚本设置变量

python - 合并 __init__ 中的两个列表,无需实例化。 Python