
C/C++
文章平均质量分 78
ArthurBruin
亚瑟电子!!!
展开
-
#、##、__VA_ARGS__和##__VA_ARGS__
一、#用来把参数转换成字符串eg1:#define P(A) printf("%s:%d\n",#A,A);int main(int argc, char **argv){ int a = 1, b = 2;P(a);P(b);P(a+b);system("pause");}输出为:eg2:#define SQUARE(x) printf("The square of "#x" is %d.\n", ((x)*(x)));S...原创 2021-01-13 14:48:26 · 299 阅读 · 0 评论 -
C++ sort排序函数详解
转载至AlvinZH博客作者Github地址1.sort使用:#include <algorithm> using namespace std;作用:排序时间复杂度:n*lg(n)实现原理:sort并不是简单的快速排序,它对普通的快速排序进行了优化,此外,它还结合了插入排序和推排序。系统会根据你的数据形式和数据量自动选择合适的排序方法,这并不是说它每次排序只选择一种方法,它是在一次完整排序中不同的情况选用不同方法,比如给一个数据量较大的数组排序,开始采用快速排.转载 2020-11-18 17:25:51 · 663 阅读 · 0 评论 -
两个vector向量连接
C++中将两个vector相连#include <iostream>#include <vector>int main(int argc, char **argv) { int arr[6] = {1,2,3,4,5,6}; std::vector<int> v1(&arr[0],&arr[3]); std::vector<int> v2(&arr[3],&arr[5]); std::原创 2020-11-18 17:18:00 · 2011 阅读 · 0 评论 -
使用__attribute__((section(“name”)))构建初始化函数表
需要做三件事:使用__attribute__((section()))定义了宏:DECLARE_INIT,此宏把函数放置到初始化函数表 使用DELCARE_INIT的宏,声明了3个模块初始化函数:A_init/B_init/C_init 在main中通过调用do_initcalls函数,依次调用编译时构建的初始化函数。其中,“_init_start”和“_init_end”的变量在链...转载 2019-12-24 16:08:52 · 847 阅读 · 0 评论 -
__attribute__编译属性section子项构建初始化函数表
gcc的__attribute__编译属性有很多子项,用于改变作用对象的特性。这里讨论section子项的作用。__attribute__的section子项使用方式为:__attribute__((section("section_name")))其作用是将作用的函数或数据放入指定名为"section_name"的段。看以下程序片段:#include <unistd...转载 2019-12-24 14:55:08 · 206 阅读 · 0 评论 -
使用STM32F4的CCM内存
我们知道STM32F4当中有个CCM内存,如图所示,这个内存是挂在D总线上直接和内核相连,因此除了内核之外谁都不能访问,那么我们怎么将其利用起来呢?网上这个资料还真的很少,今天我就给大家分享一下,献给那些还不知道的人,如有错漏,还请指正。首先,我们可以使用Keil的设置选项,将IRAM2打勾,让编译器选择什么时候使用这个内存。显然,我们还可以将这两个地址修改一下,将IRAM1改为0x100000...转载 2019-12-18 14:04:01 · 428 阅读 · 0 评论 -
RT-Thread内存管理移植问题
在做STM32F407VE系列的BSP,但出现一个问题:1.本芯片的SRAM大小为192KB;2.按照移植手册上把SRAM大小写为192KB时,堆初始化时rt_system_heap_init,始终报硬件错误;3.把SRAM改为128KB之后就正常了;按照手册进行移植的,难道堆不能全部使用完系统剩余内存?还是有其他原因?问题解决思路:STM32F407VE系列内存是不连续的...原创 2019-12-18 10:53:54 · 755 阅读 · 0 评论 -
RO段、RW段和ZI段 --Image$$??$$Limit 含义(zz)
IMPORT |Image$$RO$$Limit| IMPORT |Image$$RW$$Base| IMPORT |Image$$ZI$$Base| IMPORT |Image$$ZI$$Limit| IMPORT |Image$$RW$$Limit|从ADS1.2的帮助文档可以看出以下几个symbol的定义应该是:|Image$$...转载 2019-12-12 13:57:09 · 458 阅读 · 0 评论 -
Image$$RO$$Base
这篇文章是从网上摘录的,觉得蛮有用的,所以保存下来IMPORT |Image$$RO$$Base| ; Base of ROM codeIMPORT |Image$$RO$$Limit| ; End of ROM code (=start of ROM data)IMPORT |Image$$RW$$Base| ; Base of RAM to initialiseIMPORT...转载 2019-12-12 13:54:15 · 265 阅读 · 0 评论 -
Keil MDK中“Image$$RW_IRAM1$$ZI$$Limit”
ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。 一个ARM程序包含3部分:RO,RW和ZIRO是程序中的指令和常量RW是程序中已初始化变量ZI是程序中未初始化或初始化为0的变...转载 2019-12-12 13:49:52 · 4936 阅读 · 0 评论 -
C++中struct与class的区别
C++中struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!!既然这些它都能实现,那它和class还能有什么区别?最本质的一个区别就是默认的访问控制,体现在两个方面:默认的继承访问权限:struct是public的,cl...原创 2019-07-23 20:34:09 · 103 阅读 · 0 评论 -
__attribute__ ((aligned (n), packed))
转载至:http://blog.youkuaiyun.com/wshini7316/article/details/8537572GNU C扩展的__attribute__ 机制被用来设置函数、变量、类型的属性,其用得较多的是处理字节对齐的问题。__attribute__ 的语法为:__attribute__ ((语法列表))参数aligned(number) [number为最小对齐的字转载 2013-12-29 14:34:22 · 942 阅读 · 0 评论 -
do{}while(0)的意义和用法
转载至:http://www.spongeliu.com/415.htmllinux内核和其他一些开源的代码中,经常会遇到这样的代码:do{ ...}while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:转载 2013-12-29 13:18:51 · 610 阅读 · 0 评论 -
do{}while(0)的意义和用法
linux内核和其他一些开源的代码中,经常会遇到这样的代码:do{ ...}while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:1、辅助定义复杂的宏,避免引用的时候出错举例来说,假设你需要定义这样一个宏:#define DO...原创 2018-03-29 08:51:58 · 276 阅读 · 0 评论