sách gpt4 ai đã đi

c++ - C 头文件不能用 C 编译,但可以用 C++ 编译

In lại 作者:太空宇宙 更新时间:2023-11-04 05:46:40 26 4
mua khóa gpt4 Nike

我有以下 block 头文件 BKE_mesh.h:

/* Connectivity data */
typedef struct IndexNode {
struct IndexNode *next, *prev;
int chỉ số;
} IndexNode;
void create_vert_face_map(ListBase **map, IndexNode **mem, const struct MFace *mface,
const int totvert, const int totface);
void create_vert_edge_map(ListBase **map, IndexNode **mem, const struct MEdge *medge,
const int totvert, const int totedge);

请注意,头文件是为在 C++ 文件中使用的可能性而准备的,因为它有:

#ifdef __cplusplus
extern "C" {
#kết thúc nếu

在文件的顶部,所需的完成在底部。但是实现它的类是用 C 语言编写的。

接下来,每当我尝试 #include 头文件时,我都会收到一个奇怪的错误。如果文件有一个 .cpp 扩展名,它编译得很好,没有任何提示。但是,如果我这样做:

#include "BKE_mesh.h"

在扩展名为 .c 的文件中,出现以下错误:

expected ')' before '*' token

对于最后两个函数,具体来说,变量:

ListBase **map

在两个类(class)。 (请注意,在头文件的前面,它声明了但未定义 ListBase)。

所以,我的问题是:为什么这个有效的 C++ 代码而不是 C 代码?

Cảm ơn.

1 Câu trả lời

在 C++ 中,您可以直接引用结构名称,但在 C 中,您需要在前面加上关键字 cấu trúc.

void create_vert_face_map(struct ListBase **map, ... );

您可以通过添加 typedef 来解决这个问题。这样您就不必修改函数声明。

typedef struct ListBase ListBase;

关于c++ - C 头文件不能用 C 编译,但可以用 C++ 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2845600/

26 4 0
Bài viết được đề xuất: c - 你如何从文件中读入结构数组?
Bài viết được đề xuất: python - 如何在 Django-tables2 中排序
Bài viết được đề xuất: python - 使用 Python 将列表导出为 CSV
Bài viết được đề xuất: c - 每个 POSIX 线程的不同标准流
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com