C++
C++开发
南山二毛
怕什么真理无穷,进一寸有一寸的欢喜。
展开
-
VScode中关于java的插件
Java Run:只需要按下alt+b,就可以直接编译运行Java Test Runner:Java测试用例,在项目生命周期中,测试是一个重要的环节。Java Test Runner 对主流的测试框架 JUnit 和 TestNG 都有着很好的支持。在 Test Explorer 中,可以方便地查看所有测试用例、运行/调试测试代码、查看测试报告。Java Debugger:调试Java的工具,...原创 2019-12-05 10:05:41 · 5510 阅读 · 0 评论 -
cmake学习4--自定义编译选项
CMake 允许为项目增加编译选项,从而可以根据用户的环境和需求选择最合适的编译方案。例如,可以将 MathFunctions 库设为一个可选的库,如果该选项为 ON ,就使用该库定义的数学函数来进行运算。否则就调用标准库中的数学函数库。我们要做的第一步是在顶层的 CMakeLists.txt 文件中添加该选项:CMake 最低版本号要求cmake_minimum_required ...原创 2018-08-31 16:51:43 · 5042 阅读 · 0 评论 -
cmake学习5--安装和测试
CMake 也可以指定安装规则,以及添加测试。这两个功能分别可以通过在产生 Makefile 后使用 make install 和 make test 来执行。在以前的 GNU Makefile 里,你可能需要为此编写 install 和 test 两个伪目标和相应的规则,但在 CMake 里,这样的工作同样只需要简单的调用几条命令。首先先在 math/CMakeLists.txt 文件里添加...原创 2018-08-31 17:01:37 · 4914 阅读 · 0 评论 -
cmake学习6--支持gbd
让 CMake 支持 gdb 的设置也很容易,只需要指定 Debug 模式下开启 -g 选项set(CMAKE_BUILD_TYPE "Debug")set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")...原创 2018-08-31 17:02:23 · 1764 阅读 · 0 评论 -
cmake学习7--添加环境检查
有时候可能要对系统环境做点检查,例如要使用一个平台相关的特性的时候。在这个例子中,我们检查系统是否自带 pow 函数。如果带有 pow 函数,就使用它;否则使用我们定义的 power 函数。添加 CheckFunctionExists 宏首先在顶层 CMakeLists 文件中添加 CheckFunctionExists.cmake 宏,并调用 check_function_exist...原创 2018-08-31 17:03:56 · 3351 阅读 · 0 评论 -
cmake学习8--添加版本号
给项目添加和维护版本号是一个好习惯,这样有利于用户了解每个版本的维护情况,并及时了解当前所用的版本是否过时,或是否可能出现不兼容的情况。 首先修改顶层 CMakeLists 文件,在 project 命令之后加入如下两行:set (Demo_VERSION_MAJOR 1)set (Demo_VERSION_MINOR 0)分别指定当前的项目的主版本号和副版本号。之后,为了在...原创 2018-08-31 17:05:29 · 6050 阅读 · 0 评论 -
cmake学习8--生成安装包
本节将学习如何配置生成各种平台上的安装包,包括二进制安装包和源码安装包。为了完成这个任务,我们需要用到 CPack ,它同样也是由 CMake 提供的一个工具,专门用于打包。 首先在顶层的 CMakeLists.txt 文件尾部添加下面几行:# 构建一个 CPack 安装包include (InstallRequiredSystemLibraries)set (CPACK_RESOU...原创 2018-08-31 17:10:49 · 4180 阅读 · 4 评论 -
ROS与C++学习1
ROS与C++入门教程-构建工作空间构建Catkin包搭建开发环境(catkin_make)编写简单发布节点和订阅节点编写简单服务端和客户端使用类方法作为回调函数使用Timers类编写高级的发布器和订阅器Callbacks和SpinningROS与C++入门教程-构建工作空间创建一个catkin 工作空间:$ mkdir -p ~/catkin_test/s...原创 2018-09-07 10:15:42 · 3135 阅读 · 0 评论 -
ROS与C++学习2
Logging(日志)日志日志语句日志级别设置日志级别Logging(日志)日志ros有自身的话题机制,叫rosout,用于记录节点的日志消息。 日志消息是方便阅读的字符串内容,记录节点状态信息。 查看实时消息最好的方式是通过rqt_console GUI程序日志语句roscpp采用rosconsole包提供的客户端API。...原创 2018-09-07 14:34:18 · 2319 阅读 · 0 评论 -
ubuntu下写shell文件实现在多个终端下分别执行命令
#!/bin/bash source ~/catkin_navigation/devel/setup.bash{ gnome-terminal -t "XXD_ros" -x bash -c "roscore;exec bash"}& sleep 1s{ gnome-terminal -t "XXD_ms" -x bash -c "rosrun loitor_stere...原创 2019-03-09 19:51:43 · 7714 阅读 · 1 评论 -
cmake学习3--多个目录 多个源文件
现在进一步将 MathFunctions.h 和 MathFunctions.cc 文件移动到 math 目录下。 工程的目录如下:./Demo3 | +--- main.cc | +--- math/ | +--- MathFunctions.cc | +--- MathFunc...原创 2018-08-31 16:29:23 · 9314 阅读 · 0 评论 -
cmake学习1--在单个源文件下编译
源代码:https://github.com/wzpan/cmake-demo main.cc#include <stdio.h>#include <stdlib.h>/** * power - Calculate the power of number. * @param base: Base value. * @param exponent: E...原创 2018-08-31 16:24:20 · 2253 阅读 · 0 评论 -
C#脚本语言设计
https://www.52pojie.cn/forum.php?mod=collection&action=view&ctid=808原创 2018-05-10 00:01:22 · 5575 阅读 · 0 评论 -
LeetCode3最长无重复字符的子串/C++--Set用法
初始化: map和set封装了二叉树等 成员函数方式提供的常用操作,如:插入、排序、删除、查找等。set&lt;int&gt; s;set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, ...原创 2018-05-22 22:53:43 · 2217 阅读 · 0 评论 -
使用const提高函数的健壮性
const不仅是用来定义const常量 更大的作用是修饰函数的参数、返回值、函数的定义体 const是constant的缩写,恒定不变的意思。 被const修饰的东西都受到强制保护,可以预防意外的变动,提高程序的健壮性。 so use const whenever you need.用const修饰函数的参数 const只能修饰输入参数,如果参数做输出用,不论是指针传递还是引用传递,...原创 2018-05-28 20:04:44 · 1824 阅读 · 0 评论 -
C++中const和#define的比较
const常量有数据类型,宏定义常量没有数据类型,编译器可以对前者进行类型安全检查,而对后者只是进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。有些集成化的调试工具可以对const常量进行调试,但不能对宏常量完全取代宏常量。...原创 2018-05-28 20:11:45 · 1805 阅读 · 0 评论 -
函数设计中参数的规则
函数的参数传递方式有:值传递,指针传递和引用传递1参数的顺序遵循目的参数在前面,源参数在后面。例如:void StringCopy(char *strDestination, char *strSource);char str[20];StringCopy(str, "Hello World");2 如果参数是指针,且仅作输入用,则应该在类型前加const,防止该指针...原创 2018-05-28 20:35:25 · 2711 阅读 · 0 评论 -
函数设计中返回值的规则
1 有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。char *strcpy(char *strDest, const char *strSrc);函数将strSrc拷贝到输出参数strDest中,同时函数的返回值又是strDest。这样做并非多次一举,可以获得如下灵活性: char str[20]; int length = strlen(strcpy(s...原创 2018-05-28 21:08:22 · 2610 阅读 · 0 评论 -
C++断言使用
程序一般分为Debug和Release版本,Debug版本用于内部测试,Release版本发行给用户使用。 断言assert是仅在Debug版本起作用的宏,它用于检查不应该发生的情况。在运行过程中,如果assert的参数为假,那么程序就会中止(一般地还会出现提示对话,说明在什么地方引发了assert). 为了不在程序的Debug和Release版本引起差别,assert不应该产生任何副作用...原创 2018-05-28 21:17:13 · 2984 阅读 · 0 评论 -
C/C++ 编程规范 试题
一BOOL float 指针变量 与零值比较的if语句1.写出BOOL flag 指针变量与零值比较的if语句。 if(flag) if(!flag) 2 写出float x与零值比价的if语句 construction float EPSINON = 0.00001; if((x>=-EPSINON)&&(x<=EPSINON)) 3.写出char*p...原创 2018-05-24 23:43:44 · 4320 阅读 · 0 评论 -
VScode在linux中的正确使用姿势(总结)
配置为python3环境默认是python2,我们需要配置为python3环境 在VScode的文件-&gt;首选项-&gt;用户设置中添加"python.pythonPath": "/usr/bin/python3.5"配置flake8,实现代码错误提示和规范提示pip install flake8在VScode的文件-&gt;首选项-&am原创 2018-08-11 18:09:26 · 17445 阅读 · 0 评论 -
C# 写日志
新建一个C# Windows窗口应用程序。log4net.dll 放在工程文件夹里。 把这个文件添加到工程的引用中。 3.在项目名称上右键点击属性,选择相应的目标框架。 4.修改App.config文件,把之前的替换掉。 5.把C_LogWriter.cs复制到工程中,然后添加在工程中的现有项中。 修改名称空间,方便在其他类中进行调用。C#中的每个.cs文件都是一...原创 2018-03-16 09:25:04 · 9618 阅读 · 3 评论