gpt4 book ai didi

c - 原始类型定义的 GCC 编译器错误

转载 作者:太空狗 更新时间:2023-10-29 11:22:23 26 4
gpt4 key购买 nike

因此,在升级到 Linux Mint(并使用 GCC v4.7.3)后,一些 header 生成了一些非常奇怪的编译器错误。当我尝试编译时,我收到以下错误消息:

gcc s.c
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/include/setjmp.h:26:0,
from /usr/lib/gcc/x86_64-linux-gnu/4.7/include/bits/pthreadtypes.h:14,
from /usr/lib/gcc/x86_64-linux-gnu/4.7/include/pthread.h:14,
from s.c:2:
/usr/lib/gcc/x86_64-linux-gnu/4.7/include/bits/setjmp.h:30:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘typedef’
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/include/bits/pthreadtypes.h:14:0,
from /usr/lib/gcc/x86_64-linux-gnu/4.7/include/pthread.h:14,
from s.c:2:
/usr/lib/gcc/x86_64-linux-gnu/4.7/include/setjmp.h:46:5: error: unknown type name ‘__jmp_buf’

Compilation exited abnormally with code 1 at Mon Nov 25 09:03:37

所以这是触发编译器错误的 header :

/* Define the machine-dependent type `jmp_buf'.  x86-64 version.  */
#ifndef _BITS_SETJMP_H
#define _BITS_SETJMP_H 1

#include <bits/wordsize.h>

# if __WORDSIZE == 64
typedef long int __jmp_buf[8];
# else
typedef int __jmp_buf[6];
# endif

#endif /* bits/setjmp.h */

这是源代码(s.c):

#include <stdio.h>
#include <pthread.h>

int main()
{
return 0;
}

这是怎么回事?

最佳答案

所以我用谷歌搜索“linux pthreadtypes”并找到了另一个版本的 at code dot woboq dot org,它是特定于 Linux 的。它编译得很好,所以我删除了现有版本的 header ,它给我之前发布的错误。不确定我从哪里得到那个版本,但它在 Internet 上的某个地方,很可能是 FreeBSD 版本。必须确保您的 POSIX 线程 header /库与您的操作系统兼容。

关于c - 原始类型定义的 GCC 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20198955/

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