我已经阅读了关于SO的外部/内部联系的现有问题.我的问题是不同的 – 如果我在C和C下的不同翻译单元中有相同变量的外部链接的多个定义会发生什么?
例如:
/*file1.c*/ typedef struct foo { int a; int b; int c; } foo; foo xyz; /*file2.c*/ typedef struct abc { double x; } foo; foo xyz;
使用Dev-C和C程序,上述程序编译和链接完美;而如果将相同的编译为C程序,则会给出多重重定义错误.为什么要在C下工作,与C有什么区别?这个行为是否未定义和编译器依赖?这个代码怎么“坏”,如果我想重构它,我该怎么办(我遇到了很多这样写的旧代码)?