【问题标题】:Getting errors from crtdefs.h从 crtdefs.h 获取错误
【发布时间】:2020-11-28 23:25:12
【问题描述】:

在尝试使用 makefile 在我的项目中包含 ncurses 之后,当我尝试制作 .o 文件时,它给了我这个错误:

In file included from C:/MinGW/x86_64-w64-mingw32/include/stddef.h:7,
                 from C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/stddef.h:1,
                 from C:/MinGW/include/stdint.h:54,
                 from C:/MinGW/include/ncursesw/curses.h:63,
                 from src/main.c:1:
C:/MinGW/x86_64-w64-mingw32/include/crtdefs.h:35:18: error: expected ';' before 'typedef'
 __MINGW_EXTENSION typedef unsigned __int64 size_t;
                  ^~~~~~~~
                  ;
C:/MinGW/x86_64-w64-mingw32/include/crtdefs.h:45:18: error: expected ';' before 'typedef'
 __MINGW_EXTENSION typedef __int64 ssize_t;
                  ^~~~~~~~
                  ;
C:/MinGW/x86_64-w64-mingw32/include/crtdefs.h:62:18: error: expected ';' before 'typedef'
 __MINGW_EXTENSION typedef __int64 intptr_t;
                  ^~~~~~~~
                  ;
C:/MinGW/x86_64-w64-mingw32/include/crtdefs.h:75:18: error: expected ';' before 'typedef'
 __MINGW_EXTENSION typedef unsigned __int64 uintptr_t;
                  ^~~~~~~~
                  ;
C:/MinGW/x86_64-w64-mingw32/include/crtdefs.h:88:18: error: expected ';' before 'typedef'
 __MINGW_EXTENSION typedef __int64 ptrdiff_t;
                  ^~~~~~~~
                  ;
C:/MinGW/x86_64-w64-mingw32/include/crtdefs.h:123:18: error: expected ';' before 'typedef'
 __MINGW_EXTENSION typedef __int64 __time64_t;
                  ^~~~~~~~
                  ;
In file included from C:/MinGW/include/stdio.h:94,
                 from C:/MinGW/include/ncursesw/curses.h:164,
                 from src/main.c:1:
C:/MinGW/include/sys/types.h:123:21: error: conflicting types for 'ssize_t'
   typedef _ssize_t  ssize_t;
                     ^~~~~~~
In file included from C:/MinGW/x86_64-w64-mingw32/include/stddef.h:7,
                 from C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/stddef.h:1,
                 from C:/MinGW/include/stdint.h:54,
                 from C:/MinGW/include/ncursesw/curses.h:63,
                 from src/main.c:1:
C:/MinGW/x86_64-w64-mingw32/include/crtdefs.h:45:35: note: previous declaration of 'ssize_t' was here
 __MINGW_EXTENSION typedef __int64 ssize_t;

这是我的生成文件:

PROJECT=ProjectName

CC=gcc

CFLAGS=-Wall -std=c11
CPPFLAGS = -MMD -MP
CFLAGS   = -Wall $(INC) -g3
LIBS     = -L"C:/MinGW/lib" -L"C:/MinGW/x86_64-w64-mingw32/lib" -g3
INC      = -I"C:/MinGW/include" -I"C:/MinGW/x86_64-w64-mingw32/include" -I"C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include"

SRC_DIR:=src
OBJ_DIR:=obj
BIN_DIR:=bin
EXE:=$(BIN_DIR)/$(PROJECT)

SRC:=$(wildcard $(SRC_DIR)/*.c)
OBJ:=$(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)

-include $(OBJ:.o=.d)

all: $(EXE)

.PHONY: all clean

$(EXE): $(OBJ) | $(BIN_DIR)
    @echo ---------------------------Linking
    $(CC) $(OBJ) -o $@ $(LIBS)

$(OBJ_DIR)/%.o: $(SRC) | $(OBJ_DIR)
    @echo ---------------------------Creating .o files
    $(CC) -c $< -o $@ $(CFLAGS)

$(OBJ_DIR) $(BIN_DIR):
    @echo ---------------------------Creating Directory
    mkdir $@
    @echo ---------------------------Directory Created

clean:
    @echo ---------------------------Clean started
    rmdir /Q /S $(OBJ_DIR)
    rmdir /Q /S $(BIN_DIR)
    @echo ---------------------------Clean finished

我正在学习用 C 进行编程,但我找不到与此相关的任何内容以及 ncurses 说 curses.h 不存在的其他错误(我尝试了这两个指令 ncursesw/curses.h 和 curses.h) .我不知道操作系统是否重要,但我在 Windows 中运行。主要代码只是本次编译的测试代码:

#include <ncursesw/curses.h>
#include <stdlib.h>

int main()
{
    int x=10;
    initscr();
    raw();
    printw("%d",x);
    getch();
    endwin();
    return 0;
}

【问题讨论】:

  • 请将 main.c 的源代码添加到包含 curses.h 的位置。
  • 您是否从 Linux 复制了源文件而不转换行尾?还是从非 ASCII 源粘贴?
  • 是的,因为我下载的是x86_64-posix-seh,所以我会尝试换成win版本

标签: c gcc makefile compilation


【解决方案1】:

我刚刚重新安装了MinGw Posix,并没有将opt文件夹与include文件夹合并,可能是我第一次安装MinGW时不小心重写了crtdefs.h。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    相关资源
    最近更新 更多