C语言
宝贝等等我
学得越多,感觉自己懂得越少,就想弄明白,再学点。也许这就是学习的动力。
展开
-
在C语言头文件中加入extern "C" {} 是什么意思?
就是为了在c++中引用c的库函数,才这样定义的。因为c++的编译器会对函数名和变量名做一些修正,如果也对c中的函数名和变量名也做修正,就会出现上述问题。这样定义后,c++编译器知道这是c中的函数名和变量名,不会对它们做修正,就可以正常使用了。原创 2008-07-25 16:07:00 · 808 阅读 · 0 评论 -
C语言预编译出来命令
一、宏定义(不带参数的宏定义,带参数的宏定义)1.编译预处理就是对C源程序进行编译前,由"编译预处理程序"对预处理命令行进行处理的过程。2.C语言中,凡是以"#"开头的行,都称为"编译预处理"命令行。C语言中的编译预处命令有:#define,#undef,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#line,#pragma,#error。这些预处转载 2009-09-28 17:43:00 · 2004 阅读 · 0 评论 -
set命令用法
显示、设置或删除 cmd.exe 环境变量。SET [variable=[string]] variable 指定环境变量名。 string 指定要指派给变量的一系列字符串。要显示当前环境变量,键入不带参数的 SET。如果命令扩展被启用,SET 会如下改变:可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配SET 命令已使用的名称的所有变量的值。例如: SET P会显示原创 2018-01-18 19:51:01 · 2695 阅读 · 0 评论 -
__builtin_expect 解惑
转载自:https://my.oschina.net/moooofly/blog/175019最近看 GLib 的代码遇到这个东东,网上搜索一圈,发现很多人都写过这个,自己今天才研究到,汗颜一下,扫盲一个点,留此记录为证! 首先看一篇最官方的讲解: ====== likely() and unlikely() What are they ? In Linux kernel code, ...转载 2018-02-26 15:43:05 · 642 阅读 · 0 评论 -
C语言中do {...} while (0) 在宏定义中的作用
转载:https://www.cnblogs.com/lanxuezaipiao/p/3535626.html如果你是一名C程序员,你肯定很熟悉宏,它们非常强大,如果正确使用可以让你的工作事半功倍。然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间。在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。下面就是一个例子:#define __set...转载 2018-08-15 10:59:03 · 607 阅读 · 0 评论 -
Pjsip中一些有用的基本函数实现
最近在看些Pjsip的代码,想着把其中经常使用到的基本函数实现代码摘出,供以后有需要的时候使用。这部分代码,都是C的。# define isalnum(c) (isalpha(c) || isdigit(c))# define isalpha(c) (islower(c) || isupper(c))# define isascii(c) ...原创 2018-11-29 15:56:27 · 803 阅读 · 0 评论 -
pjsip 字符串转整数处理基本函数实现
/* * Data structure types. *//** * This type is used as replacement to legacy C string, and used throughout * the library. By convention, the string is NOT null terminated. */struct pj_str_t{...原创 2018-11-29 16:04:01 · 740 阅读 · 0 评论 -
fseek文件偏移位置的返回值和指针位置关系
fseek文件偏移位置的返回值和指针位置关系对应文件的指针偏移,在函数定义中并没有真正的说明清楚返回值,对于offset当为正数的时候是向文件尾偏移的,当为负数的时候是向文件头方向偏移的,这里主要是要注意偏移的大小和文件大小边界的关系。当offset是向文件尾方向偏移的时候,无论偏移量是否超出文件尾,fseek都是返回0,当偏移量没有超出文件尾的时候,文件指针式指向正常的偏移地址的,当偏移原创 2009-06-05 15:10:00 · 5220 阅读 · 2 评论 -
C语言中判断大小端的方法
有时候,用C语言写程序时需要知道是大端模式还是小端模式。 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还原创 2008-11-14 14:41:00 · 1439 阅读 · 0 评论 -
C语言之详解#ifdef等宏
这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endi原创 2008-07-25 16:43:00 · 365 阅读 · 0 评论 -
C语言输出格式
★d格式符,用来输出十进制整数. ⑴%d,按整型数据的实际长度输出. ⑵%md,m为指定的输出字段的宽度,数据位数小于m,左边补空格,若大于m,按实际长度输出 ⑶%ld,输出长整型数据(long) ★o格式符,以八进制输出整数(不带符号,他将符号位也作为八进制数的一部分了原创 2008-07-28 09:28:00 · 1177 阅读 · 1 评论 -
C语言中位移位运算符
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。 位移位运算符的运算对象、运算规则与结果、结合性如表2-16所示。 移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。如果是左移,则规定补入的数全部是0;如果是右移,还与被移位的数据是否转载 2008-07-24 09:38:00 · 6919 阅读 · 2 评论 -
c/c++中const用法总结
const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令 **************常量必须被初始化*************************cons的作用 (1)可以定义const常量 例如: const int Max=100; int Array[Max];原创 2008-07-24 19:51:00 · 372 阅读 · 0 评论 -
typedef和#define的用法与区别
一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef int INT;typedef int ARRAY[10];typedef (int*) pINT;typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性转载 2008-09-04 11:53:00 · 300 阅读 · 0 评论 -
也谈typedef
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://bigwhite.blogbus.com/logs/20147715.htmlC语言语法简单,但内涵却博大精深;如果在学习时只是止步于表面,那么往往后期会遇到很多困难。typedef是C语言中一个很好用的工具,大量存在于已有代码中,特别值得一提的是:C++标准库实现中更是对typedef有着大量的使用。但很多初学者对其的转载 2008-09-04 11:28:00 · 394 阅读 · 0 评论 -
va_start va_end va_arg
◎用法:func( Type para1, Type para2, Type para3, ... ){ /****** Step 1 ******/ va_list ap; va_start( ap, para3 ); //一定要“...”之前的那个参数 /****** Step 2 ******/ //转载 2008-09-05 14:57:00 · 356 阅读 · 0 评论 -
typedef的四个用途和两个陷阱
答案: 用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,转载 2008-09-08 14:01:00 · 862 阅读 · 0 评论 -
格式化输出Log
很多系统,都需要标准化输出Log,达到直观阅读Log的目的。这个是在Linux上测试的,如果需要移植到其他的系统,请根据系统情况实现inner_中的系统相关函数。自己实现了一个Log输出实现,可以根据自己需要自定义输出格式。完整输出如android的规范输出:05-16 15:21:18.501 11942 11942 F main:pid:100,tid:20005-16...原创 2019-05-16 15:37:14 · 2209 阅读 · 0 评论