小编Tum*_*yrd的帖子

C 语言中 printf 出现段错误,无警告

这是一个简短的程序,运行时会出现段错误。即使在迂腐的层面上,它也不会发出关于 clang 的警告。

#include <stdio.h>
#include <stdlib.h>

typedef struct object {
    int type;
} object;

void write(object *obj) {
    switch (obj->type) {
    case 1:
        break;
    }
}

int main(void) {
    printf("hi");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在 x86 Linux 上似乎不会发生崩溃,但我在 aarch64 Android 上。

$ gcc --version
clang version 17.0.6
Target: aarch64-unknown-linux-android24
Thread model: posix
InstalledDir: /data/data/com.termux/files/usr/bin

$ uname -a
Linux localhost 5.10.177-android13-4-00003-ga7208022a7ea-ab10815828 #1 SMP PREEMPT Fri Sep 15 16:40:54 UTC 2023 aarch64 Android
Run Code Online (Sandbox Code Playgroud)

使用 gdb 跟踪它看起来printf最终会调用write,但我现在不知道会发生这种情况。

这看起来像是一个编译器错误,但我可以很好地编译和运行其他程序。如果我删除printf …

c

4
推荐指数
1
解决办法
109
查看次数

标签 统计

c ×1