TRYBYE
trybye
2016-04-06 04:53
采纳率: 23%
浏览 2.0k

c语言中我重复定义了为什么编译器没报错了

在头文件和源文件中定义了相同的变量kk,但是编译的时候为什么没报错呢!图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • u013704336
    流浪的鹅卵石 2016-04-06 05:04

    哪里显示出你重复定义了?
    int kk;//全局变量声明

    int main(……)
    {
    kk = 2;//对kk进行定义
    }

    点赞 评论
  • qq_32223073
    Inori0w0 2016-04-06 05:25

    你没有重复定义, 一个是全局变量一个是局部变量。

    点赞 评论
  • xuweiwei1860
    fly 100% 2016-04-06 05:47

    因为有 ifndef 这个控制,会检查重复定义的,如果前面定义了就不会再定义一遍

    点赞 评论
  • qq423399099
    小灸舞 2016-04-06 06:03

    如果不是相互包含,那么问题不大。
    如果包含了,不同编译器的宽容度不一样,这种问题没什么好纠结的
    像我在VS下,楼主这样的连编译都过不了
    全局变量如果用static 限定,那就是具有内部链接,只在文件内有效。如果不用static限定,那就具有外部链接,对别的文件(当然是同一工程的最终链接到一起的)可见。

    点赞 评论
  • u010829724
    1220195669 2016-04-06 06:41

    这个问题涉及到变量的作用于问题,c语言规定,变量的作用于从变量声明的地方开始,到本文键结束为止。

    点赞 评论
  • John_ToStr
    John_ToDebug 2016-04-06 07:34

    这跟编译器版本有关, 你的编译器并不支持新的c标准, 建议用vc或者vs

    点赞 评论
  • beifengche
    beifengche 2016-04-06 14:01

    在c语言中可以有多个声明,不会报错。但是要是在C++中会报错

    点赞 评论
  • zr1076311296
    _从未止步 2016-04-06 15:41

    你把main.h中的 #ifdef 和 #endif去掉估计就会出错了

    点赞 评论

相关推荐