C语言基础
hdxbw-wq
这个作者很懒,什么都没留下…
展开
-
extern “C”的含义 和 __stdcall/__cdecl的区别
extern “C”的含义 和 __stdcall/__cdecl的区别extern "C"的含义为什么要加extern "C"动态库调用的注意事项2.1 不同版本的VS编译器编译的库2.2 __cdecl、__stdcall2.3 CRT链接选项(C运行时库的链接选择)extern "C"的含义extern "C"和__stdcall/__cdecl这两个概念都是C和C++语言混用时需要关注的。extern "C"是代码段的修饰, 既可以单独对函数进行修饰也可以放在代码片段前对整段代码进行修饰;是告知转载 2020-06-10 16:59:57 · 437 阅读 · 0 评论 -
UniCode 下char*转CString ,利用MultiByteToWideChar进行转换,中文乱码的解决方案
使用A2W,A2T这些宏函数是常见的方法,但是中文会乱码,所以采用MultiByteToWideChar进行转换//计算char *数组大小,以字节为单位,一个汉字占两个字节 int charLen = strlen(sText); //计算多字节字符的大小,按字符计算。 int len = MultiByteToWideChar(CP_ACP,0,sText,cha...转载 2020-01-16 22:00:06 · 1884 阅读 · 0 评论 -
时间日期与时间戳转换(Linux C)
本文主要学习三个知识点,第一是UTC时间、GMT时间的概念;第二是在Unix环境下UTC时间与时间戳的转换;第三是在C语言中如何修改时区。本文参考了《UNP》以及http://blog.csdn.net/foxir/article/details/43916601http://blog.csdn.net/ljafl9988/article/details/16847935一...转载 2019-12-02 10:39:12 · 2721 阅读 · 0 评论 -
链表操作的几个高效技巧
针对leetcode上面的20多个链表的算法题,总结了一下链表操作中的几个技巧。1. 快慢指针快慢指针是在遍历链表的时候使用两个指针,快指针每次比慢指针多跑一步或多步,或者快指针先跑n步。这在查找倒数第n个结点、找中间结点时只需要遍历一次,在判断链表是否有环时不需要额外的空间。例如,查找一个链表中间结点,ListNode * findMid(ListNode * head) { ...转载 2019-09-29 17:19:24 · 433 阅读 · 0 评论 -
(转)sscanf使用详解
sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都是用于输入的,只是后者以屏幕(s...转载 2019-06-27 16:26:57 · 226 阅读 · 0 评论 -
offsetof与container_of宏[总结]
1、前言 今天在看代码时,遇到offsetof和container_of两个宏,觉得很有意思,功能很强大。offsetof是用来判断结构体中成员的偏移位置,container_of宏用来根据成员的地址来获取结构体的地址。两个宏设计的很巧妙,值得学习。linux内核中有着两个宏的定义,并在链表结构中得到应用。不得不提一下linux内核中的链表,设计的如此之妙,只需要两个指针就搞定了。后续认真研...转载 2019-05-29 15:57:41 · 113 阅读 · 0 评论 -
结构体字节对齐,__attribute__(packed)
程序编译器对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏 蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式。例如我们设置结构体的对齐方式:struct student{int age;char c;};对于以上结构体,默认用sizeof输出大小为8字节,默认的字节对齐方式是4,当然我们也可以设置他的对齐 方式,如下:...转载 2019-03-12 17:36:17 · 1140 阅读 · 0 评论 -
va_start和va_end使用详解
转载于:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html 本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时的用法...转载 2018-10-13 15:12:06 · 1553 阅读 · 0 评论 -
linux下C语言编程,include的默认搜索路径
C语言编程时,发现细节的魅力很大。较为详细了看了一下关于include的知识,发现了几点新知:1.include<头文件名>和include"头文件名"如:include<stdio.h>和include"stdio.h"前者(使用<>),来引用stdio.h文件,是首先检索标准路径,看看这些文件夹下是否有该头文件;如果没有,也不会检索当前文件所在路径,并将报错...转载 2018-06-26 17:18:33 · 4381 阅读 · 0 评论 -
【C/C++】关于修饰函数关键字 __declspec,__cdecl,__stdcall,__declspec
_cdecl 是C Declaration的缩写,表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不需要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 _stdcall 是Standard Call的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入...转载 2018-05-14 11:59:10 · 488 阅读 · 0 评论 -
【学习笔记】C语言结构体的初始化
示例结构体:typedef struct people{int age;char adress[10];}people_t; 1.先定义一个结构体之后逐个元素赋值;例:people_t p1;p1.age = 10;p1.char = {"adress"};2.先定义一个结构体整体进行初始化,元素间用逗号分隔;例:people_t原创 2018-02-07 15:00:43 · 218 阅读 · 0 评论