gpt4 book ai didi

c - 为什么 GCC 对 void-pointer 算术的接受不被认为是一个错误?

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:29 24 4
gpt4 key购买 nike

<分区>

关于如何在 C 中禁止 void 指针运算,至少有三个不同的帖子; gcc 4.8.2 允许它,假设 void 是字节大小;以及如何打开额外的迂腐警告来触发错误。这是一个例子:

#include <stdio.h>

/* compile gcc -Wall -o try try.c */

int main() {
char *str="string";
void *vp= (void *) str;

++vp; /* arithmetic on void point. huh? */

printf("%s\n", (char*)vp);
return 0;
}

我的问题是考虑 C 编译器在无效代码的情况下应该做什么。当编译器不对无效代码发出编译错误时,它不被视为错误吗?

无论如何,这对于编译器来说似乎是一种奇怪的行为——即使 gcc 没有发出编译错误,至少,它可能会发出带有默认编译器标志的“弃用”警告。而且,即使有-Wall,它仍然没有发出警告。嗯?这让我感到惊讶,因为 gcc 在其他方面看起来非常成熟,而且 C 并不是一种新颖或复杂的语言。

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