gpt4 book ai didi

c++ - 声明如何与自身冲突?

转载 作者:可可西里 更新时间:2023-11-01 17:06:09 24 4
gpt4 key购买 nike

这是我在尝试编译一些使用 taucs 的代码(不是我的代码)时遇到的错误:

.../taucs/src/taucs.h:554: error: conflicting declaration ‘typedef struct taucs_ccs_matrix taucs_ccs_matrix’
.../taucs/src/taucs.h:554: error: ‘taucs_ccs_matrix’ has a previous declaration as ‘typedef struct taucs_ccs_matrix taucs_ccs_matrix’

什么?自相矛盾?

在我捏了捏自己之后,我创建了一个测试 header 并放入了一个冲突的定义,只是为了确保我对此是正确的:

在文件testit.h中:

#include "somethingelse.h"

typedef struct
{
int n;
} foobar;

在文件 somethingelse.h 中:

typedef struct
{
int n;
} foobar;

果然,我得到:

testit.h:6: error: conflicting declaration ‘typedef struct foobar foobar’
somethingelse.h:4: error: ‘foobar’ has a previous declaration as ‘typedef struct foobar foobar’

或者如果我在 testit.h 中有这个:

typedef struct
{
int n;
} foobar;

typedef struct
{
int n;
} foobar;

testit.h:9: error: conflicting declaration ‘typedef struct foobar foobar’
testit.h:4: error: ‘foobar’ has a previous declaration as ‘typedef struct foobar foobar’

行号总是不同的——声明不能与自身冲突。我不明白。有人见过这个吗?

最佳答案

单个 header 是否包含在多个源文件中?如果是这样,您需要像这样将其包装在“include guards”中:

#ifndef TAUCS_H
#define TAUCS_H

//Header stuff here

#endif //TAUCS_H

关于c++ - 声明如何与自身冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3553265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com