我正在尝试从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 *)的大小派生的,但是期望的是从字符数组的大小派生的字符串的长度。