错误:声明冲突。用g ++编译c代码

时间:2016-09-04 08:26:25

标签: c++ g++ googletest

我有一个lib,我想用google测试框架测试。代码非常陈旧,我无法在实际代码中更改任何内容。

我添加了一个头文件first.h,后面有typedef

typedef struct aList* aList;

在另一个文件中,例如second.cstruct定义为:

struct aList {
    aRecord* top;
};

和我的TestFile.cc

#include "gtest/gtest.h"
#include "First.h"

TEST(First_Test, Create)
{
    FuncName();
}

当我使用:

编译它时
g++ -isystem ../../../test/framework/gtest/googletest/include -isystem ../../../test/framework/gtest/googlemock/include -g -Wall -Wextra -pthread --coverage -Iinclude/path -c TestFile.cc -Lpath/to/lib -llibfile

我收到以下错误:

error: conflicting declaration typedef struct aList* aList
error: struct aList has a previous declaration as struct aList

头文件中没有包含警戒。但我不认为问题是因为这个原因。

有任何线索如何解决这个问题?

修改

这是一个完整的可验证的例子。

FirstFile.h的内容:

#include "SecondFile.h"

typedef struct aList* aList;

void func();

FirstFile.c的内容:

#include "FirstFile.h"

void func()
{

}

void main()
{
    func();
}

SecondFile.h的内容:

struct aList {
    int* top;
};

TestCode.cc的内容:

#include "FirstFile.h"

void funcTest()
{
    func();
}

编译命令:

g++ TestCode.cc -o TestCode

1 个答案:

答案 0 :(得分:0)

不幸的是,贵公司的一些小恶魔已经设法将不合规的c ++代码添加到您的库中。

只是想编译一下:

struct aList {};
typedef struct aList* aList;

结果:

2 : error: conflicting declaration 'typedef struct aList* aList'
typedef struct aList* aList;
^
1 : note: previous declaration as 'struct aList'
struct aList {};

我担心你被迫修复错误的库。