1. 程式人生 > >ndk-build編譯64位.so,出現ndk error: cast from 'int*' to 'int' loses precision [-fpermissive]

ndk-build編譯64位.so,出現ndk error: cast from 'int*' to 'int' loses precision [-fpermissive]

這是因為Linux 64位系統上指標型別佔用8個位元組,而int型別佔用4個位元組,所以會出現loses precision。

可以先將int* 轉成long型別,long型別可以隱式型別轉換到int型別,如下:

int func() {
    int *p;
    p = //賦值
    return (long)p;
}

這樣就不會報編譯錯誤了。