编译warning处理
发表于|更新于|工作笔记
|总字数:42|阅读时长:1分钟|浏览量:
子类指针强转至父类会出现字节未对齐的warning,如果想去掉编译warning只需要先将子类转至void*,再强转到父类
文章作者: ciiki
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ciiki的博客!
相关推荐

2024-09-13
windows下编译libopus
前言libopus是xiph开发的opus音频编解码库,记录一下在windows平台使用MinGW编译libopus以及官方编解码demo的过程(为什么不用MSVC,因为MSVC就是屎,装个VS占掉十几G磁盘,各个版本VS兼容性也做得一坨,不得不装好几个版本的VS🤬,最逆天的是VS历史版本你在官网还下载不到) 配置w64devkit环境经测试opus1.5.2版本只有w64devkit里编译通过了,在git bash、MSYS2中均编译不过,报错如下 1234567891011F:\learn\opus\silk\x86\NSQ_del_dec_avx2.c:959:43: error: incompatible type for argument 1 of '_mm256_cvtepi16_epi64' __m256i x = _mm256_cvtepi16_epi64(_mm_loadu_si64(&x16[i])); ^~~~~~~~~~~~~~...

2022-11-29
64位Linux编译32位程序
查看系统架构 123uname -mlscpucat /proc/cpuinfo 然后需要修改64位makefile中的两处位置,第一为修改依赖库为32位的库,第二为给gcc后加上-m32的参数 file a.out查看输出程序是64-bit还是32-bit

2024-10-14
内存重叠问题
今天开发中偶遇一个问题,程序乱崩溃,偶尔崩在new对象里,偶尔崩在对象释放里,甚至访问局部int变量也崩过,gdb显示不出更多有用信息,最后才定位到内存重叠问题 原始代码比较复杂,简化后就是下面的模型 12char arr[9];memcpy(&arr[0], &arr[3], sizeof(char)*6); 本意是节省点内存,直接用arr指向的内存,显然这里拷贝时存在重叠部分。阅读文档才知道原来memcpy不支持内存重叠的拷贝,之前还不知道。(搜索关键词 memcpy overlap) memcpy 内存重叠会引发未定义问题,这也就是程序乱崩的原因 解决方案是换成memmove即可,或者新申请块内存,拷贝至新内存再拷回去

2023-10-17
Doxygen生成项目文档
安装doxygen和GraphViz1apt install doxygen graphviz 使用方法生成配置文件1doxygen -g 编辑配置文件1vim Doxyfile 123456789101112OUTPUT_LANGUAGE = ChineseEXTRACT_ALL = YESEXTRACT_PRIVATE = YESEXTRACT_PACKAGE = YESEXTRACT_STATIC = YESEXTRACT_LOCAL_METHODS = YESINPUT =source \ includeRECURSIVE = YESHAVE_DOT = YESCALL_GRAPH = YESCALLER_GRAPH = YES 我的完整配置 生成1doxygen

2023-06-18
逆波兰表达式
逆波兰表达式又称作后缀表达式,是一种便于计算机运算的数学表达式,我们日常使用的中缀表达式需要用括号确定优先级,而后缀表达式是不需要括号的 中缀表达式转后缀表达式手写实现转换比如想把(3+5)*4+6/(8-5)转为后缀表达式 为所有运算符加括号 (3+5)*4+6/(8-5)—–>(((3+5)*4)+(6/(8-5))) 将运算符移至")"之后 (((3+5)*4)+(6/(8-5)))—–>(((35)+4)*(6(85)-)/)+ 去除所有括号 (((35)+4)*(6(85)-)/)+—–>35+4*685-/+ 即最终结果为35+4*685-/+ C++实现转换1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495...

2024-12-26
RtAudio播放PCM
RtAudio播放PCM1. RtAudio简介RtAudio是一个跨平台的音频I/O库,可以在Windows、MacOS和Linux上使用。它提供了简单易用的接口,可以方便地进行音频数据的输入和输出。项目地址 Pulse和ALSA的区别PulseAudio和ALSA是Linux系统中两种重要的音频处理组件,它们在功能和用途上存在显著区别。 ALSA(Advanced Linux Sound Architecture)ALSA是Linux内核的一部分,主要负责与声卡的直接通信。它提供了一套底层的音频驱动接口,允许应用程序直接访问声卡硬件。然而,ALSA有一些局限性,例如它一次只能处理一个应用程序的音频流,且不支持多路混音。此外,ALSA的配置和使用相对复杂,需要手动设置和调整。 PulseAudioPulseAudio是一个运行在用户空间的音频服务器,它通过ALSA与硬件通信。PulseAudio的主要功能是作为多个应用程序之间的音频仲裁者,能够同时处理多个音频流,并提供混音、音量控制、设备切换等功能。PulseAudio还支持跨平台使用,可以在不同的操作系统上运行...
评论
公告
This is my Blog




