.cpp:13:21: error: cast from ‘int*’ to ‘int’ loses precision [-fpermissive] 13 | int size = (int)&_binary_TEST_DATJ_size;
时间: 2024-03-20 17:40:21 浏览: 17
这个错误表示您正在尝试将一个指针转换为整数,这可能会导致精度丢失。在这里,您正在将指向变量 `_binary_TEST_DATJ_size` 的指针转换为整数。如果您只是想获取变量的大小,那么您可以使用 `sizeof` 运算符来获取变量的大小,而无需将指针转换为整数。例如,您可以尝试使用以下代码:
```
int size = sizeof(_binary_TEST_DATJ_size);
```
这将返回 `_binary_TEST_DATJ_size` 变量所占用的字节数。
相关问题
[Error] cast from 'int*' to 'int' loses precision [-fpermissive]怎么解决
这个错误通常是因为将一个指针类型的变量直接赋值给整型变量导致的。解决方法是需要将指针类型的变量转换为整型变量。可以使用 C++ 中的类型转换函数 static_cast,如下所示:
```cpp
int* ptr = new int(10);
int num = static_cast<int>(*ptr); // 将指针类型的变量转换为整型变量
```
或者,如果你知道指针指向的具体值,也可以直接将其赋值给整型变量,如下所示:
```cpp
int* ptr = new int(10);
int num = *ptr; // 直接将指针指向的值赋值给整型变量
```
需要注意的是,如果指针指向的值超出了整型变量的表示范围,那么转换后的整型变量可能会出现截断或溢出等问题。
39 37 C:\Users\14798\Desktop\test.cpp [Error] cast from 'void (*)()' to 'long unsigned int' loses precision [-fpermissive]
这是一个编译错误的提示信息,意思是你在程序中使用了一个函数指针,但是你尝试将它强制转换为一个无符号长整型,这个转换导致了精度的损失。解决这个问题的方法是检查你的代码,确保你没有将函数指针转换为错误的数据类型。如果你需要将函数指针转换为整型,可以考虑使用intptr_t或uintptr_t类型,它们是整型类型,可以存储指针值而不会有精度损失。