C
zhangk64
上帝恩赐,命运天定。 希望之光,普照我身。 坚毅如钢,勇往直前。 而今伊始,命途自闯。
展开
-
C语言的奇技淫巧
C语言的tricks不多,但大多比较晦涩,就跟数学一样需要循序渐进的理解,同时也需要对编译器、C语言标准都有一定的理解。而C语言的雷区较多,也即有很多我们经常碰到的未定义行为(undefined behavior)。在看tricks前,我们先看个雷:C1a转载 2017-07-15 00:00:09 · 2222 阅读 · 1 评论 -
C语言中的弱符号与强符号,强引用与弱引用
强符号和弱符号 在编程中碰到一种情况叫符号重复定义。多个目标文件中含有相同名字的全局变量的定义,那么这些目标文件链接的时候就会出现符号重复定义的错误。比如在目标文件 A 和目标文件 B 都定义了一个全局整形变量global,并且都初始化,那么当 A 和 B 链接时会报错: multiple definition of 'global' 对于C/C+原创 2017-09-04 22:26:51 · 2886 阅读 · 0 评论 -
C语言之断言
我们在使用C语言编写工程代码时,我们总会对某种假设条件进行检查,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。它可以快速发现并定位软件问题,同时对系统错误进行自原创 2017-09-06 21:48:27 · 543 阅读 · 0 评论 -
C语言笔记之数组
在看comware代码的时候,发现一种之前在学校没用过的C语言数组用法,起码我是本科的时候没见过这么写的,此处mark一下,做个记录。代码举例:#include typedef enum enTest{ TEST_1, TEST_2, TEST_3, TEST_4, TEST_5,}TEST_E;int TEST_stub(int a, in原创 2017-09-06 21:11:25 · 279 阅读 · 0 评论 -
struct和typedef struct分析
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是转载 2017-08-25 16:35:41 · 202 阅读 · 0 评论 -
__cplusplus和extern "C"使用
Code:#ifdef __cplusplusextern "C" { #endif ... #ifdef __cplusplus} #endif 解释:1.c++中定义了__cplusplus,C语言中没有该定义。即:识别是c代码还是c++代码。如下段代码:#include int main(int argc,char *argv[])原创 2017-08-19 16:00:21 · 567 阅读 · 0 评论 -
C语言 if条件判断中包含语句块
在C语言if判断语句中可以这样使用if ( ({ 语句1;语句2;... 语句n;}) )注意语句块需要用 () 括号括起来,否则编译报错判断结果取决于最后一条语句,无论前面的语句是true或false。如图:执行结果为:原创 2017-09-04 22:58:00 · 4581 阅读 · 0 评论 -
C头文件组织与包含原则
说明 本文假定读者已具备基本的C编译知识。 如非特殊说明,文中“源文件”指*.c文件,“头文件”指*.h文件,“引用”指包含头文件。 一、头文件作用 C语言里,每个源文件是一个模块,头文件为使用该模块的用户提供接口。接口指一个功能模块暴露给其他模块用以访问具体功能的方法。使用源文件实现模块的功能,使用头文件暴露单元的接口。用户只需包含转载 2017-09-04 20:33:01 · 3077 阅读 · 2 评论 -
C头文件编写基本规则
1. 注释,版权,作者,重大修订记录等信息2. 防重入开关,也就是常见的#ifndef _XXX_XXX_H //必须确保header guard宏名永不重名#define _XXX_XXX_H //#endif3. C++ 编译器自适应开关,也就是常见的//.h文件头部#ifdef __cpluspluse原创 2017-09-04 20:01:56 · 884 阅读 · 0 评论 -
C代码笔记(一)
mark:这里做个标记,记录一下工作中看别人代码的时候,遇到的一种编写方式,反正我以前没这么写过,这里记录一下吧,下面以逻辑最简单的方式表达;#include #include typedef struct TEST{ int a; int b;}TEST_S;#define MEMBER(s,a) s.avoid func(TEST_S s){ //此原创 2017-10-19 20:36:04 · 310 阅读 · 0 评论