“重新定义' foo'作为不同类型的符号“
我正在尝试重构并带来一些旧代码,我遇到了类似这样的事情:
struct foo;
typedef struct foo * foo;
在尝试编译它时,我得到以下类型的错误:
Source/Types/Types.h:27:18: error: redefinition of 'foo' as different kind of symbol
typedef struct foo * foo;
^
有谁知道这是什么造成的?我很久没有触及过代码,但我当然不记得与此相关的任何错误。它是代码库中最核心的代码,一切都取决于它;我不知道如果它确实是一个错误,我怎么可能错过这样一个明显的错误。由于原始的foo
是一个“struct tag”(只有struct
关键字之后的一个合理的引用),它怎么能与我的新foo
typedef类型冲突?
编辑1:这是整个实际文件,也许我错过了一些东西,但看起来很简单。它会转储上面描述的大量相同错误,每种错误类型一个:
# if !defined(TYPE_DECLARATIONS)
# define TYPE_DECLARATIONS
# include "Core.h"
# warning "in Core.h"
static int class = 0; // to prove I’m not compiling as C++
struct e(fork);
typedef struct e(fork)* e(fork);
struct e(execution);
typedef struct e(execution)* e(execution);
struct e(thing);
typedef struct e(thing) e(thing);
struct e(typeRepresentation);
typedef struct e(typeRepresentation)* e(typeRepresentation);
struct e(typeRepresentation) {
void * family;
char name[64]; };
struct e(thing) {
void * const pointer;
e(typeRepresentation) const isa; };
# endif //!defined(TYPE_DECLARATIONS)
(另外,忽略e()
宏;在这种情况下它是noop。)
没有找到相关结果
已邀请:
4 个回复
疼嘶桐
宏,因此它实际上是在形成一个noop,删除了有问题的代码。 :o 我是个白痴。很抱歉浪费每个人的时间。
谷起
谷起
芜任亮蜡