gpt4 book ai didi

C++ 到 Ada 的指针和异常

转载 作者:太空宇宙 更新时间:2023-11-04 14:52:08 25 4
gpt4 key购买 nike

我正在面试潜在的软件工程候选人,希望将这段 C++ 代码翻译成 Ada:

#include <iostream>

int main(int argc, char *argv[])
{
int *W = NULL;
try { *W = 3; }
catch (...) { std::cout << "default exception"; }
}

与 C++ 代码一样,我希望 Ada 代码产生“由信号 SIGSEGV 终止”的结果。

顺便说一句,我使用的是最新的 GNAT (GNAT 9.1.1 20190503 (Red Hat 9.1.1-1))

最佳答案

Ada 中相应的代码是这样的

with Ada.Text_IO; use Ada.Text_IO;

procedure SigSegV is
type Int_Ptr is access Integer;

W : Int_Ptr := null;
begin
W.all := 3;
exception
when others =>
Put_Line ("default exception");
end SigSegV;

但它不会触发 SIGSEGV 信号,您会按预期收到消息。此外,编译器已经警告过你:

sigsegv.adb:8:04: warning: null value not allowed here
sigsegv.adb:8:04: warning: "Constraint_Error" will be raised at run time

所以我不确定使用 Ada 代码是否可以获得与在 C++ 中相同的行为...除了从 Ada 调用 C++ :D

关于C++ 到 Ada 的指针和异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56571231/

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