x86_64 xercexc: error: cast from 'const void*' to 'long int' loses precision [-fpermissive]

mingw编译x86_64版本xerces-c-2.8.0:

修改src/xercesc/util/HashPtr.cpp:

unsigned int HashPtr::getHashVal(const void *const key, unsigned int mod

, MemoryManager* const)

{

return ((long long)key % (unsigned long)mod);

}

修改src/xercesc/internal/XSerializeEngine.cpp:

inline XMLSize_t XSerializeEngine::alignAdjust(XMLSize_t size) const

{

XMLSize_t remainder = (long long) fBufCur % size;

return (remainder == 0) ? 0 : (size - remainder);

}

x86_64 xercexc: error: cast from 'const void*' to 'long int' loses precision [-fpermissive]

时间: 2024-11-06 05:48:53

x86_64 xercexc: error: cast from 'const void*' to 'long int' loses precision [-fpermissive]的相关文章

error: cast from ‘char*’ to ‘int’ loses precision

编译时出现错误:         error: cast from ‘char*’ to ‘int’ loses precision 原因:程序中存在 char* addrCom; addrCom= ......//赋值 if(-1 == (int)addrCom) //导致编译出错 { ...... } 上面是隐式转换,将其改为标准C++显示类型转换:static_cast<int>或这是reinterpret_cast<int> 依然是: error: cast from ‘c

关于Linux下C编译错误(警告)cast from &#39;void*&#39; to &#39;int&#39; loses precision

char *ptr; //此后省略部分代码 if( (int)ptr==-1 ) //出错地方 那句话的意思是从 void* 到 int 的转换丢失精度,相信看到解释有些人就明白了, 此问题只会出现在X64位的Linux上,因为在64位的机器上指针占用8个字节,int 占用四个字节,所以才会出现这样的问题, 解决方法: (long)ptr == -1 就好了 关于Linux下C编译错误(警告)cast from 'void*' to 'int' loses precision

iOS开发 - &quot;Cast from pointer to smaller type &#39;int&#39; loses information” 解决办法

今天要写一个联系人搜索算法. 百度了下, 在code4App中找到相关代码. 但是自己跑了下, 发现报错. 错误内容如下: "Cast from pointer to smaller type 'int' loses information"  从错误内容我们也能看出, 错误出在'int'这里了. 而那份代码也比较早的, 在Xcode5.1之后, 要用uintptr_t来替代int. 把错误语句处的int全换成uintptr_t即可. iOS开发 - "Cast from p

invalid conversion from `const void*&#39; to `void*&#39;

在编译一个工程时出错,使用memcpy函数处报错 invalid conversion from `const void*' to `void*' void image2mat(const image<uchar>* I, cv::Mat& img){ int width = I->width(); int height = I->height(); img.create(height, width, CV_8UC1); memcpy(img.datastart, (cha

void *memmove( void* dest, const void* src, size_t count );数据拷贝,不需要CPU帮助

分享到 腾讯微博 QQ空间 新浪微博 人人网 朋友网 memmove 编辑词条 编辑词条 --> memmove用于从src拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中.但复制后src内容会被更改.但是当目标区域与源区域没有重叠则和memcpy函数功能相同. 快速导航 目录 1函数简介 2程序示例 大事记 光影集锦 图册集锦 花絮视频 1函数简介 原型:void *memmove( void* dest,

const void *a 与 void *const a 的差别

const void *a 这是定义了一个指针a,a能够指向随意类型的值,但它指向的值必须是常量. 在这样的情况下,我们不能改动被指向的对象,但能够使指针指向其它对象. 比如: const void *a:*a=0x123;//是编译通只是的,由于*a中放的是个const值. const值是不能被改变的. const int  m=1;     const int n=2; a=&m;    a=&n;//编译能够通过. void* const  a 这是定义了一个const指针a.a能够

void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别?

void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别? const void fun(){};和void const fun(){};两个相同. 如果采用"按址传递方式"的函数返回值加const 修饰,那么函数返回值(即地址)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针. 如果采用"按值传递方式"的函数返回值加const 修饰,由于函数会把返回值复制到外部临时的存储单元

关于 void main 和 int main

main 函数的返回值大家注意了吗?也许有人会说可以没有返回值,如果你深入到程序的 CRT启动代码,你会发现.... 1 __initenv = envp; 2 mainret = main(argc, argv, envp); 3 if ( !managedapp ) 4 exit(mainret); 5 if (has_cctor == 0) 6 cexit(); 按照新的 C99 标准,即使函数本身没有定义返回值,编译器也会加上,以返回给激发程序运行状态.很多人甚至市面上的一些书籍,都使用

invalid use of non-static member function ‘void Date::init(int, int, int)’

#include<iostream> using namespace std; class Date { public: int day,month,year; void init(int,int,int); void print_ymd(); }; void Date::init(int yy, int mm, int dd) { year = yy; month = mm; day = dd; } void Date::print_ymd() { std::cout << ye