
C/C++
TS1130
这个作者很懒,什么都没留下…
展开
-
C/C++ 计算函数运行时间
clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t; 头文件:time.h/ctime在C/C++中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下: #define CLOCKS_PER_SEC ((clock_t)1000)#include “stdio.h” #include “stdlib.h” #include “time.h” int main( void )原创 2020-06-24 19:47:12 · 870 阅读 · 0 评论 -
缺少xxx.so.5解决办法
建立软件链接ln -s 源文件 目标文件ln -s /lib/libncurses.so.5 /usr/lib/libtinfo.so.5也可能缺少对应平台的库,如程序是32位机编译,在64位机运行会报错,这时可以下载对应的32位库文件并建立软连接参考文章:https://blog.youkuaiyun.com/smile_shaco/article/details/53693957...原创 2020-06-24 19:37:50 · 948 阅读 · 0 评论 -
uint64_t 兼容64位、32位编译器
#include <inttypes.h> printf("%" PRId64 "\n", value); 这是一种跨平台的书写方式,主要是为了同时支持32位和64位操作系统。PRId64表示64位整数,在32位系统中表示long long int,在64位系统中表示long int。相当于:printf("%" "ld" "\n", value); //64bit OSprintf("%" "lld" "\n", value); //32bit OS或者printf("原创 2020-06-24 18:48:20 · 1907 阅读 · 0 评论 -
相互引用的结构体定义
样例1(正确样例):typedef struct tagTest_B TEST_B_S;typedef struct tagTest_A{TEST_B_S *pstB;} TEST_A_S;struct tagTest_B{TEST_A_S *pstA;};样例二:struct B;typedef struct A{ struct B *p; int a; int b;}AAA;typedef struct B{ struct A原创 2020-06-19 15:28:30 · 371 阅读 · 0 评论 -
static inline
http://www.cnblogs.com/cnmaizi/archive/2011/01/19/1939686.html http://www.cnblogs.com/pengyingh/articles/2405718.html原创 2018-04-12 19:28:41 · 272 阅读 · 0 评论 -
static const extern 关键字
static用法 1. static成员变量class Task {public:private: static unsigned n;//static数据成员不会影响该类及其对象的sizeof};unsigned Task::n = 0;类成员函数 static成员函数只能访问static成员,非static都可访问函数体内的static变量 作用范围为函数体,内存只被分原创 2017-04-13 09:27:35 · 447 阅读 · 0 评论 -
结构体中的冒号
连接位域名(变量名)与位域大小(变量占位大小,按位计算)struct 位域结构名 { 位域列表 }; 其中位域列表的形式为: 类型说明符 位域名:位域长度 例如: struct bs { int a:8; int b:2; int c:6; }; https://blog.youkuaiyun.com/cyhleo/article/details/6845462...原创 2018-05-14 09:49:50 · 452 阅读 · 0 评论 -
C++11 std::function和std::bind
#include &amp;lt;iostream&amp;gt;#include &amp;lt;functional&amp;gt;using namespace std; class Foo { public: void memberFunc(double d, int i, int j) { co...原创 2018-06-04 22:27:31 · 288 阅读 · 0 评论 -
C语言变长数组data[0]【总结】
发现在linux内核中,结构体中经常用到data[0]。这样设计的目的是让数组长度是可变的,根据需要进行分配。方便操作,节省空间。struct buffer{ int data_len; //长度 char data[0]; //起始地址};在这个结构中,data是一个数组名;但该数组没有元素;该数组的真实地址紧随结构体buffer之后,而这个地址就是结构体后...转载 2018-05-29 19:21:43 · 375 阅读 · 0 评论 -
C++无名命名空间详解
namespace { int a; void f(){/*...*/} int g() {/*...*/} } 相当于namespace $$$ { int a; void f(){/*...*/} int g() {/*...*/} } using namespace $$$; 同一...原创 2018-06-02 15:50:08 · 798 阅读 · 0 评论 -
VSCode安装与调试(cannot open source file "stdio.h")
主要步骤安装VSCode在VSCode内安装c++插件(安装第一个c/c++的插件(微软的官方插件))安装g++编译、调试环境(目前windows下调试仅支持 Cygwin 和 MinGW。这里使用的是MinGW. )MinGW安装教程——著名C/C++编译器GCC的Windows版本修改VSCode调试配置文件includepath配置:加入MinGW安装路径/bin(需要添加环...原创 2019-08-06 11:10:52 · 8041 阅读 · 0 评论 -
C语言输出汉字
int main() { setlocale(LC_ALL, "chs"); wchar_t arr[] = L"以为可以输出汉字"; wchar_t arr0[] = {L'零', L'壹'}; wchar_t *arr1[] = {L"零啊啊", L"壹啊啊"}; wprintf(L"%s\n", arr); wprintf(L"%c\n", arr[0]); wprintf(...原创 2019-09-05 15:16:21 · 10978 阅读 · 0 评论 -
C/C++中基本数据类型在不同系统中所占空间大小
关于这个基本的问题,很早以前就很清楚了,C标准中并没有具体给出规定那个基本类型应该是多少字节数,而且这个也与机器、OS、编译器有关,比如同样是在32bits的操作系统系,VC++的编译器下int类型为占4个字节;而tuborC下则是2个字节。所以int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):sizeof(short int)<=s转载 2018-04-14 14:37:40 · 432 阅读 · 0 评论 -
关于指针(指针常量/常量指针、指针数组/数组指针、指针函数/函数指针)
指针常量(常指针):char * const p const位于星号右侧,const修饰指针本身,即指针本身是常量,指针指向地址不可改变,但所指地址变量值可以改变。 常量指针(指向常变量的指针):const char *p cosnt位于星号左边,const修饰指针所指向的变量,即指针本身指向的地址可以改变,但它所指的内容不可以被修改。 指针函数:函数的返回值是一个指针类型。 函数原创 2016-01-11 14:03:03 · 768 阅读 · 0 评论 -
[C++] memset 和sizeof 的使用注意
memset的特点是:将给定地址后连续的内存(包括给定地址),逐个byte初始化为参数中指明的值。 注:对于二维或高维的不适用!!!!即使是连续分配的! memset会清空存放二级指针的连续内存,附带清除些别的内存区域。之后只要访问诸如A[0][1]之类的都会”无法读取内存”,因为二维数组的结构已经被破坏。//正确做法:int **f = new int*[m];for(int i = 0;原创 2017-12-27 19:26:34 · 1162 阅读 · 0 评论 -
char 转float(串口数据转换)
unsigned char rxData[50] = {0}; short rxIndex = 0; short rx_short_Data = 0; float rx_float_Data[12] = {0}; WPARAM ch = 0xF0; for(int i = 0; i< 50; i ++) rxData[rxIndex++] = c原创 2016-02-15 13:21:41 · 4125 阅读 · 0 评论 -
窗口类指针与窗口句柄
一、区别 HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd. HWND是Windows系统中对所有窗口的一种标识,即窗口句柄。这是一个SDK概念。 CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。二、如何得到窗口对象指针CWnd *转载 2016-02-15 17:33:44 · 1129 阅读 · 0 评论 -
C语言
位逻辑运算符(6个) 按位与&,按位或|,按位异或^,按位取反~,左移<<,右移>>。 逗号运算符 属于双目运算符,先求表达式1,再求表达式2,并将表达式2的解作为逗号表达式的解。原创 2016-02-19 17:14:38 · 821 阅读 · 0 评论 -
字符串长度的计算与字符串比较
字符串长度的计算 (1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意!!! 1、不带转义字符的字符串 如:“abc!x=/”,其长度为 7 2、带转义字符的字符串 (1) 字符串“abc\n”:其中的’\n’为转义字符(换行符),计算字符串长度时只能计作一个字符,所以该字符串的长度为4(而不是5)原创 2016-01-11 17:56:55 · 9475 阅读 · 1 评论 -
STL简单使用
#include <iostream>#include <vector>#include <map>using namespace std;typedef vector<int> IntArray;int main(){ IntArray array; array.push_back(1); array.push_back(2); array.push_back原创 2017-03-30 08:35:41 · 384 阅读 · 0 评论 -
C++调用约定和名字约定
调用约定: __cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,2、_cdecl是C和C++程序的缺省调用方式。每一个调用转载 2017-03-30 10:36:35 · 427 阅读 · 0 评论 -
看源码,看源码,看源码!--所有C语言函数的源代码
在D:\Program Files\visual studio\VC\crt\src 目录下面。这个目录下面包含所有C语言函数的源代码。 http://www.cnblogs.com/youxin/p/3270974.html如strcat函数定义:char *strcat (char *dest,const char *src) 函数说明:strcat()会将参数src字符串拷贝到参数dest原创 2017-03-25 13:09:14 · 8982 阅读 · 0 评论 -
C/C++常见编译错误整理
1.error C2143: 语法错误 : 缺少“;”(在“*”的前面) cocos编程时出现,原因:定义 Sprite 未引入命名空间 USING_NS_CC;原创 2017-01-13 10:53:37 · 718 阅读 · 0 评论 -
C、C++二维数组动态分配内存
C++动态数组分配int **arr;int m, n;//非连续分配arr = new int*[m]; for(int i = 0; i < m; i ++) arr[i] = new int[n];//连续分配内存arr = new int*[m]; arr[0] = new int[m * n];for(int i = 1; i <原创 2016-01-11 10:32:12 · 462 阅读 · 0 评论 -
C宏定义常见用法与条件编译
# 在c语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。## ##被称为连接符(concatenator),用来将两个Token连接为一个Token。关于…的使用 …在C宏中称为Variadic Macro,也就是变参宏。do {…} while (0) 在宏定义中的作用 Li原创 2017-07-27 18:34:29 · 576 阅读 · 0 评论 -
C++学习笔记
C++是一种混合型语言。一方面我们可以把C++当作是C语言的拓展和改进,在这个意义上,C++是一种过程语言。另一方面,C++又充分展示了其面向对象的特征,因此C++又是一种面向对象的语言。C语言是面向过程的语言(命令型语言),采用自顶向下设计,将大问题分解为若干小问题(函数分解法),其缺点是对某个过程的变动会传递到子过程中(串联改变),不利于软件维护(系统的测试、调试、升级)。C++是面向对象程原创 2016-01-11 14:56:09 · 680 阅读 · 0 评论 -
string与char的内存分配
#include <iostream>#include <string>using namespace std;int main(){ char c1;//栈上4字节cccccccc char c2[] = "Bravo";//8字节Brav o00cccc char c4[] = "";//4字节00cccccc string s1;//栈上16字节原创 2016-01-11 13:18:33 · 899 阅读 · 0 评论