自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 对实时操作系统是不是有一些误解?

感觉一些人对实时操作系统有误解,以为实时操作系统中的TASK总是能立刻马上就执行的,实际不然,大多数的操作系统相关书籍对此概念都有 描述:实时操作系统是指所有任务都在规定时间内完成的操作系统,也就是必须,满足时序可预测性.实时系统不是反应很快的系统,而是反应具有时序可预测性的系统.不过,往往在现实开发工作中,实时操作系统一般反应都是很灵敏的,这只是实时系统的一个结果,而不是定义.实时系统最重要的部分是进程或者工作的调度.只有精密,合理和及时的进程调度才能保证响应时间,同样,资源也是,需要保证进程或者任务

2021-03-31 11:39:49 161 1

原创 cmake设置库和可执行文件的存放路径

set(LIBRARY_OUTPUT_PATH path)set(EXECUTABLE_OUTPUT_PATH path)

2021-03-16 17:43:37 4463

原创 cmake错误集锦:关于include_directories()

在代码中我们可能回去这样include的一个c/c++头文件:#include "common/time/a.h"使用相对路径的方式包含引用了一个头文件,然后我们在CMakeLists.txt中这样写:include_directories( /home/xxx/project_path/common/time)编译的时候发现,编译无法通过,报代码中的a.h无法找到。解决:细心一点不难发现,确实无法找到,因为/home/xxx/project_path/common/time 下面没有c

2021-03-16 15:42:38 3771 1

原创 cmake错误集锦:add_subdirectory()

在组织公司工程目录结构时,报了一个关于add_subdirectory()的错误:add_subdirectory not give a binary directory but give source directory看名字我们就知道,该指令是需要包含当前目录下的子目录的,但是发现,当前CMakeLists.txt中却用add_subdirectory()包含了当前路径的上层某些目录A,到时报错。解决:当然是使目录A的上级CMakeLists.txt中包含编译目录A了。因为cmake都是从顶级

2021-03-16 15:30:03 4738

原创 cmake错误集锦:unkown arguments specified

错误描述工作中使用cmake的if语句时,出现一个错误:"STREQUAL" "x86_64"Unknown arguments specified语句是这样写的:if($ENV(COMPILING_TYPE) STREQUAL "x86_64") #...elseif() #...else() #...endif()解决方法根据报的错误是cmake解析时找不到或者不认识第一个参数是啥,具体原因不清楚,可以给第一个参数加一个小括号括起来就可以编译通过:if(($ENV(COM

2021-03-10 16:54:34 7705 3

原创 在CMakeLists.txt如何执行脚本?execute_process

execute_process(COMMAND bash SCRIPT_PATH/name.sh WORK_PATH)执行xx.sh.并且将WORK_PATH作为当前工作路径.工作中用到了记录一下,有时间来详细的学习一下.

2021-03-05 18:25:59 1682

原创 const与指针结合什么时候影响变量的类型?

遵循原则:当const右边没有指针*的话,const是不参与类型组成的,这一点在函数重载中也是要考虑的。int main() { int *q = nullptr; int* const p = nullptr; int const* o = nullptr; cout << typeid(q).name() << endl; cout << typeid(p).name() << endl; cout &

2021-03-03 21:59:46 103 1

原创 C++中const与一级指针结合场景分析

遵循2个原则:不能将一个常量作为左值使用;(直接修改)不能将一个常量的地址给一个普通的指针或者普通的引用变量。(间接修改)int main() { const int a = 100; a = 99; //直接修改 int* p = &a;//间接修改 return 0;}涉及到的一个C++语言规范:const修饰的是离它最近的类型。C++中const与一级指针结合的几种场景:*const int p离const最近的类型是int,con

2021-03-03 21:54:45 149 1

原创 C++/C中const的区别(常量和常变量)

1. C语言中被const修饰的叫常变量#include <stdio.h>void main() { const int v; //ok}C语言中,const修饰的量可以不初始化,但是之后再想修改就不能修改了。但是他始终是被当作一个变量看待的,比如:void main() { const int n = 100; int arr[n] = { }; //error}这里报错是因为C语言中,即使名字前面有个‘常’字,但是它终归是个变量,不能用在应该使用常量的地方,不

2021-03-03 21:24:02 1182 3

原创 命令行给cmake传递参数

我们期望在编译前将一些信息缓存起来,然后用CMakeLists.txt进行构建时,希望可以访问之前缓存给cmake的变量:比如我们希望缓存TARGET_CPU,并且他的值为X86,那么我们可以在命令行或者脚本中执行一下操作:cmake -DTARGET_CPU:STRING=x86然后,我们就可以在CMakeLists.txt中使用他帮助我们完全一些逻辑:if(TARGET_CPU STREQUAL "x86") #do somethingelse() #do somethingendif

2021-03-03 17:46:56 11940 2

原创 C++宏之__cplusplus

所有的c++编译器都会内置一个**__cplusplus**宏,我们在系统头文件可能经常见到,下面举个例子:#ifdef __cplusplusextern "C" {#endif int fun() { //do something }#ifdef __cplusplus}#endif不管是用C++或者C编译器编译生成的,都可以直接给C项目调用。关于C/C++相互调用的方法的文章...

2021-03-02 22:25:41 542

原创 C++和C代码相互调用

由于C++和C代码在编译的时候,产生的符号的规则不一样,所以在程序链接的阶段,就不认识自己调用的函数产生的符号,导致发生链接错误,无法生产目标文件。1.C++调用C代码:用extern “C” 将C代码声明包括起来sum.c//生成符号 _sumint sum(int a, int b) { return a + b;}main.cppextern "C" { int sum(int a, int b);}int main() { int ret = sum(10

2021-03-02 22:11:05 395

原创 C++基础之函数重载

一个经典的函数重载案例:bool compare(int a,int b) { cout << "compare(int a,int b)" << endl; return a > b;}bool compare(double a, double b) { cout << "compare(double a, double b)" << endl; return a > b;}bool compare(

2021-03-02 21:28:57 373

原创 C++基础之内联inline函数

1. 内联函数应用场景:一些函数比较简单但可能被频繁调用,函数调用堆栈开销远远大于函数体指令执行时间,如下:inline int sum(int a,int b) { return a + b;}发生编译过程中,处理成内联函数后没有堆栈开销,因为在函数的调用点直接将函数代码展开2. inline函数不生成符号g++ main.cpp -O2 -cobjdump -t a.out无法看到对应内联函数的符号3. 并不是所有的函数都会处理成内联,inline只是建议编译器将函数处理成

2021-03-01 21:36:47 133

原创 C++基础之带默认值的函数

int sum(int a, int b) { return a + b;}1. 给默认值一定从右向左给正确做法:int sum(int a, int b = 20) { return a + b;}int sum(int a = 10, int b = 20) { return a + b;}错误做法:int sum(int a = 10, int b) { return a + b;}假设上面错误做法是正确的,我们调用时使用其默认值10,b的

2021-03-01 21:21:06 869 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除