kern.osrelease的sysctlbyname返回NULL

问题描述 投票:0回答:1

这是我的代码,我正在尝试在IOS设备上获得OSVersion。并且该警告在行返回ret处; ---->指针转换不兼容的整数,从结果类型为“ char *”的函数返回“ char”;用&取地址。当我将ret更改为&ret时,它仍然不起作用。

char *getOSVersion() {
        char str[256];
        size_t size = sizeof(str);
        char ret = sysctlbyname("kern.osrelease", str, &size, NULL, 0);
        return ret;
    }
ios objective-c jailbreak
1个回答
0
投票

似乎sysctlbyname返回整数值,并且您尝试从函数中返回本地创建的char指针。我认为您应该将char指针作为参数并在函数体中分配它,或者应该按值返回char。尝试以这种方式使用;

char getOSVersion() {
    char str[256];
    size_t size = sizeof(str);
    char ret = (char)sysctlbyname("kern.osrelease", str, &size, NULL, 0);
    return ret;
}
© www.soinside.com 2019 - 2024. All rights reserved.