typedef

error LNK2005: "enum ae::<unnamed-type-IMU_STATE> ae::IMU_STATE" (?IMU_STATE@ae@@3W4<unnamed-type-IMU_STATE>@1@A) already defined in model_event.obj

今天遇到个坑是这样的:
A工程里面的一个a.h文件定义了个枚举 enum {...} IMU_STATE;已经#pragma once或#ifndef了。
B工程使用A.lib,也会使用一些包含a.h的头文件,這就会报上面already defined的错误。
原因的该枚举在A工程下的cpp和B工程下的cpp都生成了包含该枚举定义的obj,链接器就不知道对于此两个完全相同的入口该使用哪个了。
使用extern在a.h声明,在a.cpp定义也不行一样错。

解决方法:加typedef避免多次定义。
typedef enum {...}IMU_STATE;

posted @ 2017-03-16 20:02  细雨细语  阅读(259)  评论(0编辑  收藏  举报