我有一个lib,我想用google测试框架测试。代码非常陈旧,我无法在实际代码中更改任何内容。
我添加了一个头文件first.h
,后面有typedef
:
typedef struct aList* aList;
在另一个文件中,例如second.c
,struct
定义为:
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
答案 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 {};
我担心你被迫修复错误的库。