为什么Go似乎没有识别C头文件中的size_t?

Gra*_*row 1 c go

我正在尝试编写一个go库,它将充当C库的前端.如果我的一个C结构包含a size_t,我会收到编译错误.AFAIK size_t是一种内置的C型,为什么不去识别呢?

我的头文件看起来像:

typedef struct mystruct
{
    char *      buffer;
    size_t      buffer_size;
    size_t *    length;
} mystruct;
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

gcc failed:
In file included from <stdin>:5:
mydll.h:4: error: expected specifier-qualifier-list before 'size_t'

on input:

typedef struct { char *p; int n; } _GoString_;
_GoString_ GoString(char *p);
char *CString(_GoString_);
#include "mydll.h"
Run Code Online (Sandbox Code Playgroud)

我甚至尝试在之前添加// typedef unsigned long size_t或者// #define size_t unsigned long在.go文件中添加#include,然后我得到"gcc产生无输出".

我已经看到了这些 问题,并查看了示例但没有成功.

Geo*_*che 10

根据C99,§7.17,size_t不是内置类型,而是在中定义<stddef.h>.