为什么我不能在C中获得枚举的"多重定义"?

 手机用户2602906791 发布于 2023-01-31 08:01

假设我有三个文件:

//m.h
const int RED = 1;
//m.h ends here

//f1.c
#include "m.h"
//f1.c ends here


//f2.c
#include "m.h"
int main() {return 0;}
//f2.c ends here

单独编译每个将工作,但gcc -Wall f1.o f2.o -o prog将产生: multiple definition of 'RED'

现在,如果我用以下内容替换const:

//m.h
enum {RED=1} colors;
//m.h ends here

我将能够编译progRED用作const,不会出现任何 multiple definition错误.

enum当您在不同文件中使用具有相同名称的全局变量或结构时,为什么s 的行为与可见的行为不同?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有