jsk*_*ski 0 c++ ada segmentation-fault
我正在面试潜在的软件工程候选人,并希望将这段C ++代码翻译成Ada:
#include <iostream>
int main(int argc, char *argv[])
{
int *W = NULL;
try { *W = 3; }
catch (...) { std::cout << "default exception"; }
}
Run Code Online (Sandbox Code Playgroud)
与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;
Run Code Online (Sandbox Code Playgroud)
但是它不会触发SIGSEGV信号,并且您可以按预期方式收到消息。此外,编译器已经警告您:
sigsegv.adb:8:04: warning: null value not allowed here
sigsegv.adb:8:04: warning: "Constraint_Error" will be raised at run time
Run Code Online (Sandbox Code Playgroud)
因此,我不确定您能否获得与使用Ada代码的C ++相同的行为...除了从Ada调用C ++之外:D
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |