struct编译错误中的struct

Pau*_*eny 1 c compiler-construction mpi header-files

我正在尝试编写一个包装MPI的框架库.

我有一个框架调用的头文件afw.h和一个名为的框架的实现文件afw.c.

我希望能够通过#include "afw.h"在应用程序代码中编写使用框架的应用程序代码.

摘录自afw.h:

#ifndef AFW_H
#define AFW_H

#include <mpi.h>

struct ReqStruct
{
    MPI_Request req;
};

ReqStruct RecvAsynch(float *recvbuf, FILE *fp);
int RecvTest(ReqStruct areq);
Run Code Online (Sandbox Code Playgroud)

我提供一个实现了RecvAsynchafw.c其中#includes afw.h

当我使用mpicc(在这种情况下使用pgc下面的MPI编译器包装器)编译时:

mpicc -c afw.c -o afw.o
Run Code Online (Sandbox Code Playgroud)

我明白了:

PGC-S-0040-Illegal use of symbol, ReqStruct (./afw.h: 69)
PGC-W-0156-Type not specified, 'int' assumed (./afw.h: 69)
PGC-S-0040-Illegal use of symbol, ReqStruct (./afw.h: 71)
PGC-W-0156-Type not specified, 'int' assumed (./afw.h: 71)
Run Code Online (Sandbox Code Playgroud)

以及任何地方ReqStruct使用的类似错误afw.c

我有什么想法我做错了吗?

MBy*_*ByD 5

你定义了一个struct ReqStruct,而不是ReqStruct,那些不是同一个东西.

要么将功能更改为

struct ReqStruct RecvAsynch(float *recvbuf, FILE *fp);
Run Code Online (Sandbox Code Playgroud)

或使用typedef:

typedef struct ReqStruct ReqStruct;
Run Code Online (Sandbox Code Playgroud)