我正在尝试从VMS上的C ++程序传递值。

$DESCRIPTOR( lname, (char*) "A" );
$DESCRIPTOR( lvalue, (char *) "Hello World" );
lib$set_logical( &lname, &lvalue );
lib$set_symbol (&lname,&lvalue);


应该行吗?如果不是,我该如何纠正?

如何检查返回值?

如何检查环境是否成功?

如果可行,是否可靠? (不取决于权限等)。

最佳答案

否。在descrip.h中查看如何定义$ DESCRIPTOR:
#define $DESCRIPTOR(name,string) struct dsc$descriptor_s name = { sizeof(string)-1, DSC$K_DTYPE_T, DSC$K_CLASS_S, string }

在您的示例中,lname和lvalue的第一个元素都将包含3,这是从(char *)的大小派生的,但是期望的是从字符数组的大小派生的字符串的长度。

10-08 11:54