c\c++梳理

使用vc++也有一段时间了,总觉得有点乱,这下想梳理一下。

         c语言开始吧,C库函数、宏定义、结构、编译环境、函数的重构、程序的扩展。

         C的标准库函数在studio.h stdlib.hstring.h中在程序中调用,真正的代码在.lib.obj文件中,无论是vs还是其他的编译环境,可以找到和设置默认路径找到或指向这些文件。所有的最后都会定义到windowsAPI函数(当然前提是windows编程),windowsAPI函数在user32.dll等之类的dll中。这些就不用管了,交给windows了。而这只是一部分的代码如CreateFileMessageBox之类的。还有一部份的代码由编译器直接编程汇编,whilefor循环的什么的。代码的第二部分越高,速度越快。

         C的宏定义,编译器预处理部分的,#if     #endif #define #pragam 之类的。这些东西只在工程中出现,不会再exedll等编译好的文件中有。印象比较深的是

         typedef struct_sss

         {

                   int param

                   ........

         }sss,*ptrsss

         sss是指结构体,ptrsss是结构体的指针

         typedef int  (*fun) (int ,int) 

         这样就定义了函数的指针,用这个可以指向一个函数,用于回调。(指针一开始并没有想到它,可是不知不觉的就出来了)

         还有这个#ifndef     #else        #endif这类语句,标志条件判断,高手的开源代码中一堆这些东西,用于各种平台,有ARMlinuxwindowsOS的,实在是令人佩服(UPX的源代码就是个很好的例子)

         C程序的结构,一般编译器对于.c文件是全部编译的,存放在起来,.h文件与.c文件没有直接的联系,.h文件是函数符号存在的地方,在.c中用#include来包含.h文件,这样就可以就可以知道需要引用的函数名字是什么了,用了之后,编译器就会有一定的先后算法,编译文件,程序运行时,所有的函数都已经被编译,一样的函数名字当然有一个一样的编译后的符号,指向和调用。

         其实这里存在很大的问题,那就是命名空间的问题,程序太大了,函数名就不够用了,C++中用classpublicprivateprotect等属性以及继承和接口、泛行等来解决这个问题(其实应该就是一种函数名,更改和记录命名的一种规则-----个人认为)。

         C的编译环境,我印象比较深的是用GUN的工具链可以搭建一个liunx嵌入式的编译环境,我努力了好几个星期也没搞成功,没高人指点啊,痛苦死了,大学里怎么不教了!!!在liunx下可以用makemakefile结合编译一个大一点的C工程,创建obj文件、链接obj文件、生成可执行文件,注意它的默认路径和库文件路劲,可以自己放几个库进去。

         今天就到这了,有错误的地方希望大虾指正。

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值