以下代码为什么以及如何工作?
a 和 b 都具有外部链接,但它们可以通过无链接类型声明吗?
如果不是,为什么 ac 中的 MyEnum_t 和 bc 中的 MyEnum_t 之间没有冲突?
啊
#ifndef _A_H_
#define _A_H_
void print_a_enum();
#endif
bh
#ifndef _B_H_
#define _B_H_
void print_b_enum();
#endif
交流
#include "a.h"
#include <stdio.h>
enum MyEnum{ ONE = 1, TWO = 2};
typedef enum MyEnum MyEnum_t;
MyEnum_t a = ONE;
void print_a_enum()
{
printf("%d\n", a);
}
公元前
#include "b.h"
#include <stdio.h>
enum MyEnum{ ONE = 3, TWO = 4};
typedef enum MyEnum MyEnum_t;
MyEnum_t b = ONE;
void print_b_enum()
{
printf("%d\n", b);
}
主程序
#include "a.h"
#include "b.h"
int main()
{
print_a_enum();
print_b_enum()
}
打印输出:1 3
gcc 版本 4.5.0 20100604 [gcc-4_5-branch 修订版 160292] (SUSE Linux)