随笔分类 - C++/C
关于C++/C的一些东东
摘要:官方文档1: https://blogs.msdn.microsoft.com/vcblog/2017/04/11/linux-development-with-c-in-visual-studio/ 官方文档2: https://blogs.msdn.microsoft.com/vcblog/20
阅读全文
摘要:重新运行visual studio安装程序,出现添加删除组件的界面,勾选即可。
阅读全文
摘要:Visual Studio 2017 introduces built-in support for handling CMake projects. This makes it a lot simpler to develop C++ projects built with CMake witho
阅读全文
摘要:这里写下gdbserver的用法: 两台机子,宿主机A和目标机B。 step1: 我们在B上安装gdbserver,在A上编译可执行程序a.out,把a.out拷贝到B上面去。 step2: 在A上打开server服务:gdbserver ip(A):port a.out;在B上用gdb本地调试,g
阅读全文
摘要:YAML(Yet Another Markup Language)(发音 /ˈjæməl/ ) 一种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言。 适应场景 语言优点 YAML 语法 yaml 官方文档:http://www.yaml.org/spec/1.2/spe
阅读全文
摘要:项目开发过程中发现一个问题,有段代码,一个动态库的cpp代码里不包含头文件中类的空构造空析构实现,就会出现编译出的动态库依赖项少了很多。而添加后则多了好几个依赖项。下面看例子: 假设代码中的T1、T2都是来自T.so文件。我们的目的是由a.so依赖T.so,而最终的b.cpp生成的可执行文件仅仅依赖
阅读全文
摘要:即引用相关头文件时候,要使用extern "C"{}来包含。 关于extern "C"{}的详情,参考:http://www.cnblogs.com/skynet/archive/2010/07/10/1774964.html
阅读全文
摘要:调试器需要手动指定。 settings->debugger->default->executable path。这里默认空的,需要指定。路径在安装目录下的CodeBlocks\MinGW\bin\gdb32.exe。 重新编译,即可调试。 参考:https://blog.csdn.net/wanrx
阅读全文
摘要:看错误内容: stackoverflow上一个友人的解释: 这个错误是在我把gcc4.8编的工程迁移到ubuntu16.04(gcc5.4)上编译时候发生的。这是C++ ABI一个错误,gcc4升gcc5时,std::string库接口做了迁移,而我工程中用了三方库tensorflow和protob
阅读全文
摘要:我在ubuntu16.04上迁移工程,遇到了这个错误。 pthread库不是Linux系统默认的库,链接时需要添加-pthread参数。 这里注意是链接那一步添加-pthread,而不是编译选项。
阅读全文
摘要:在C/C++中,为了避免同一个文件被include多次,有两种方式:一种是#ifndef方式,一种是#pragma once方式(在头文件的最开始加入)。 #ifndef的是方式是受C/C++语言标准支持。#ifndef方式依赖于宏名不能冲突。它不光可以保证同一个文件不会被包含多次,也能保证内容完全
阅读全文
摘要:1 #include "memory.h" 2 #include "stdio.h" 3 enum {encrypt,decrypt};//ENCRYPT:加密,DECRYPT:解密 4 void des_run(char out[8],char in[8],bool type=encrypt); 5 //设置密钥 6 void des_setkey(const char...
阅读全文
摘要:assert预处理宏 assert是一种预处理宏,所谓预处理其实是一个预处理变量,其行为类似于内联函数,assert宏使用一个表达式作为其条件: 首先是对expr进行求值,如果其值为false,那么assert输出信息并终止程序的执行,如果为true则什么也不做。assert宏定义在cassert头
阅读全文
摘要:0. 1. 宏可以像函数一样被定义,例如: #define min(x,y) (x<y?x:y) //事实上这个宏存在BUG 但是在实际使用时,只有当写上min(),必须加括号,min才会被作为宏展开,否则不做任何处理。 2. 如果宏需要参数,你可以不传,编译器会给你警告(宏参数不够),但是这会导致
阅读全文
摘要:函数定义: int vprintf ( const char * format, va_list arg ); printf() and friends are for normal use. vprintf() and friends are for when you want to write
阅读全文
摘要:支持c++11: setting->compiler-> 打上勾即可。(如果没有c++11,那么请更新codeblocks最新版。) pthread_create错误: 由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创
阅读全文
摘要:C++ 语言可以用const 来定义常量,也可以用#define 来定义常量。但是前者比后者有更多的优点:(1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。(2)
阅读全文
摘要:普通回调 类成员函数回调 bind函数 一般常用语法是: newFunName=bind(oldFunName,arg_list); bind函数返回一个新的函数对象。其中bind第一个参数是oldFunName,它是待绑定的函数名,arg_list是oldFunName的参数列表。注意,这个参数列
阅读全文
摘要:#include #include int main() { int cpu_num; cpu_num = sysconf(_SC_NPROCESSORS_CONF); printf("_SC_NPROCESSORS_CONF=%d\n",cpu_num); cpu_num = sysconf(_SC_NPROCESSORS_O...
阅读全文
摘要:内部实现:前者逐每个字符进行比较,并判当前字符是否为0; 后者逐内存块进行比较。 效率:后者自然要优,不论从内部实现上,还是系统优化上。 场景:后者无法替代前者。在项目中遇到一种情况,两个字符串比较,长度不定,前者遇到0会结束比较,后者不会,则越界。当仅仅是比较两个完整字符串的话,还是用strcmp
阅读全文