- 博客(8)
- 资源 (3)
- 收藏
- 关注
原创 解决std::addressof找不到及eclipse lunna+cdt 8.6.0 支持 c++11的设置
最近在eclipse下写c++代码,当用到std::addressof时,eclipse报错,说是无法解析这个函数: 但带两个下划线前缀的同名函数std::__addressof却是可以用的,而且使用std::addressof时也能正常命令行编译,不会报错 本来打算就这么将就用吧,不想去进一步搞清楚原因了,除了那红字看着不爽,没别的影响。 但是代码在vs2010下编译时又出错了,说是找不到
2015-10-30 14:21:35 2208 1
原创 vc2010 sse指令优化效果明显
对于大量浮点数运算,用sse指令优化的效果是非常明显的。 vs2010的编译器内置函数([Compiler Intrinsics])支持see指令,所以程序员不必痛苦的用汇编指令来实现sse指令优化,关于详细的sse指令说明参见microsoft的官方文档 Streaming SIMD Extensions (SSE)(点击打开链接)下面这段代码用简单的循环实现两个浮点数组的点积之和,用ss
2015-10-16 17:07:36 4038
原创 msc和gcc编译器的内置函数(Compiler Intrinsics/Built-in Functions)
msc和gcc编译器都提供了丰富的内置函数,虽然函数名各有不同,但总是有不少共通的内容,对于跨平台开发非常有用,善用这些函数,可以提高程序的效率同时也减少开发工作量。 msc的内置函数叫Compiler Intrinsics,相关文档在这里 Compiler Intrinsics(点击打开链接) gcc的内置函数叫Built-in Functions,相关的文档在这里Built-in Funct
2015-10-14 11:26:09 3720
原创 c++ template 多层继承下找不到纯虚拟函数实现 报错:undefined reference to “xxx“
如下代码中,定义了3个类,ClassA,ClassB,ClassC,依次为被继承关系,ClassA,ClassB是模板类, 在ClassA中定义了一个纯虚拟函数getKeyFromObject,实现将从V中获取K的功能: getKeyFromObject函数在ClassA,ClassB中都有被调用,在ClassC中被实现。 按照我的思路,这样就成了。不论在Class,ClassB中,都会调用C
2015-10-13 14:37:53 3508 1
原创 cmake+gcc解决extended initializer lists only available with -std=c++11 or -std=gnu++11
有时,我们需要一个结构体变量做为参数传递给函数,后面又不需要再用到这个结构体变量,所以如果专门定义一个变量,再将这个变量传递给函数就显得挺罗嗦。 就像下面这段代码,tmpStruct只是起到一个数据包装的作用,调用test()之后并不再用到,所以这个变量就显示有些多余 。#include struct _stA{ char *a; int b; int
2015-10-11 15:22:58 21889 2
原创 linux/windows下获取gcc(mingw)编译器预定义宏的方式
我们在阅读一些源代码时经常发现类似这样的宏WIN32,_WIN64,__x86_64,__linux却找不到在哪里定义的,这些其实是编译器预定义的宏。在不同的操作系统内容不同。 为了知道gcc编译器都预定义了哪些宏, 在window下可以输入如下命令: gcc -posix -E -dM - < nullinux下,命令稍有不同 gcc -posix -E -dM - < /dev/n
2015-10-10 14:23:23 8289
原创 利用gcc的预定义宏和内置函数(Built-in Functions)实现大小端判断和大小端数据转换
对于涉及跨平台开发的项目,就可能会遇到数据大小端的问题,其实就是一个数字在内存中的字节序的问题,判断当前系统是大小端有现成的例子,自己实现转换代码也非常方便,网上有好多不用多说。 但我是个懒人,就算是这么简单的代码,有现成的就不想自己写。 今天要说的是gcc本身已经提供了大小端的判断和数据转换的函数,真的没必要自己写。gcc预定义宏判断大小端(Endian)先看看这个文章:查看gcc的默认宏定义
2015-10-10 11:17:09 11957
原创 gcc 嵌入式汇编(asm)实现bsr(位扫描)指令
在c/c++语言中,如果你想获取一个二进制数为1的最高位的位置(比如40的最高位位置是5,1的最高位位置是0),该怎么办?c语言实现最笨的办法就是下面的代码//对一个64位无符号整数进行位扫描(从高位到低位)inline __int8 _bsr_int64_(unsigned __int64 num) { __int8 count=(sizeof(num)
2015-10-09 11:07:22 5045 1
CMake脚本在ultraedit中的语法高亮支持
2023-06-08
erpcgen-windows-x86_64.zip
2020-09-17
windows下MSVC兼容的dirent.h
2016-03-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人