SDL_Init 问题

问题描述 投票:0回答:1

有人知道为什么这段代码(用 gcc test.c -o test -lSDL2 -Wall -Wextra 编译) 多次打印“HERE”后导致段错误? close 函数是在 sdl 中定义并在 init 期间调用吗?

#include <SDL2/SDL.h>

void close() {
    printf("HERE\n");
    SDL_Quit();
}

int main() {
    SDL_Init(SDL_INIT_VIDEO);
    return 0;
}

我在archlinux上编译它,如果我删除关闭函数或重命名它工作正常。

c segmentation-fault overriding sdl
1个回答
0
投票

close
是一个标准的POSIX函数,用于关闭打开的文件描述符。通过将函数命名为
close
,您将覆盖该函数。

close
的签名是:

int close(int fildes);

您的函数不匹配(如果匹配,则必须正确复制/包装

close
)。

© www.soinside.com 2019 - 2024. All rights reserved.