gpt4 book ai didi

c - 用 C 中的零编译器错误抑制除法或模数

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:28 26 4
gpt4 key购买 nike

我正在编写一个 C 程序,我想在其中触发异常,以便该程序在 Windows 上崩溃并调用 Windows 错误报告。

我认为,引发崩溃的一种好方法是除以零。但是,当我尝试这样做时,编译器不会编译程序并给出错误:C2124。

有没有办法强制编译器编译程序并忽略代码中的上述被零除语句?

或者我应该找到另一种方法让我的程序崩溃吗? :)

#include <stdio.h>

int main(int argc, char **argv)
{
return 1/0;
}

最佳答案

abort , 在 <stdlib.h> 中定义是导致程序异常终止的首选方法。但是,针对您导致被零除的特定意图的解决方案是对编译器隐藏除数:

volatile int x = 0;
return 1/x;

关键词volatile告诉编译器 x可能以编译器未知的方式更改。这可以防止编译器知道它为零,因此编译器必须生成代码以在运行时执行除法以防x。更改为零以外的值。

当然,被零除的行为是没有定义的,所以不保证会导致程序终止。

还要记住“如果你对编译器撒谎,它会报复的。” (亨利·斯宾塞)。

关于c - 用 C 中的零编译器错误抑制除法或模数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51261071/

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