这是因为在D语言中,指针不能直接和整数进行比较。需要使用cast将整数转换为指针类型,或者使用std.conv中的to函数进行转换。

修改代码如下:

module test_s_trans; import std.stdio;

void main() { immutable char[] str = "Hello, world!"; // 在常量区中声明一个字符串

char* ptr1 = cast(char*) str.ptr; // 将字符串的指针转换为 char*
if( ptr1 >= cast(char*)(0x10000) && ptr1 < cast(char*)(0x20000))
{
    write("指向常量区域\n");
}
else
{
    write("指向非常量区域\n");
}

}

这里使用了cast将整数转换为char*类型的指针,使得可以进行比较。

d语言以下代码module test_s_trans;import stdstdio;void main immutable char str = Hello world!; 在常量区中声明一个字符串 char ptr1 = castchar strptr; 将字符串的指针转换为 char if ptr1 = 0x10000 && ptr1 0x20000

原文地址: http://www.cveoy.top/t/topic/fsBv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录