利用世界最小最快的C编译器打造自己的C编辑器
利用世界最小最快的C编译器打造自己的C编辑器
简介tinycc 世界上最小编译速度最快的C语言编译器 各项功能进官方去看
TCC官方下载地址:http://ftp.twaren.net/Unix/NonGNU/tinycc/tcc-0.9.25-win32-bin.zip
我知道 大家基本上都用过WIN—TC吧 特别是上过大学的 C语言入门时用的都是
他的操作界面如图
哈哈 看下图 发现他的安装文件夹下 有TCC.exe等编译器 原来作者是通过调用他来实现的
不过经常有出现问题 我感觉用他还不如命令行下使用TCC编译器 加上我们最近在学C语言
所以我自己想给自己写一个专用的C语言编译器 可能也会给Crack8小组写一个专版吧
(你可能会问 我刚去学C语言 就想着写C语言的编译器 呵呵 大学入门当然是从C语言教起)
但我没上大学之前 我自己已经在网上混了很久 老实说C确实不怎么会 但别的语言我擅长啊
从2007到2010 我已经出过很多小工具了 你可以百度 Crack8或QQ吻 就知道我发过什么了
在这里生明一下 个人能力与学校无关 到这里你应该知道我为什么去大学了吧 跟工作当然有点关系
就是学历 两个字 你想着去做一分工作 让别人以你的学历低为由 给你很少的钱你愿吗?
没学历 别人要不要你先? 要 那是当然有滴 而且还比较少 当然我也想利用这几年时间
自己再多学点东西(还是靠自学) 我并不是指望在大学里能学到什么 前辈们从大学出来 什么水平看了就懂
呵呵 上面是题外话 (你不懂或不可能做到的事 不代表着别人没能力或做不到 可能你以为自己还是公认聪明的呢)
言归正传 下面我们来看看 如果要编写自己的C编译器 什么写 其实这压根就称不上是 只是调用别人的而已
没什么技术含量 但是你连这点都想不到 说明了什么问题 还有居然被WIN-TC给扰断了
没技术含量的东西 他调用别人的成品 居然让别人强大的功能 逊色了好几分 出不该出的错
现在你明白了吧 没技术含量的东西 别人都做得不好 当然有个人想去帮他完善一下了 或写个更好的
下面看图 让你明白着编写的原理与思路 这个估计也是WIN-TC的核心思路吧 没技术的东西 只要你看就会
呵呵 看到没有 当在命令行下使用TCC时 发现他会提供各种出错信息 就像MASM5一样的提示
我们可以通过取回显来得到错误信息 也就是像WINTC那样显示在左下角 (可以用任何语言来写)
我们再看一下下图 更加直观的了解原版TCC的功能 居然还能忽略掉错误
在预处理那里我故意打成#in2clude "stdi
相关文档:
1. 创建类型为Win-32 Static Library的工程:
(1)填写工程名称,工程名称不与已经存在库名相同即可,如mylib;
(2)默认配置,直接点击完成、确定;
(3)在这个工程下新建一个类型为C/C++ Header File的文件,文件名为liwenying.h;
(4)在liwenying.h下面输入代码
......
#include "windows.h"
void main()
{
MessageBox(NULL, "你好啊!", "提示", MB_OK);
return 0;
}
通过windows.h文件调用windows自带的api函数MessageBox,来完成提示框,效果棒
null表示附属的窗体为空
MB_OK表示对话框的类型 ......
关于 C/C++ 函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的。
VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调用方式,在 DLL 导出函数中,为了跟 Windows API 保持一致,建议使用 __stdcall 方式。
调用约定跟堆栈清除密切相关。如果写一个汇编函数,给 C/C++ ......
C 语言的面向对象
如前所说,面向对象是一种软件设计的思想,是语言无关的。在本节中,我举一个链表(list) 的例子来说明如何在 C 语言中的设计出有面向对象风格的代码。
定义接口
接口是面向对象语言中的一个比较重要的概念,接口只对外部承诺实现该接口的实体可以完成什么样的功能,但是不暴露实现的方式。这样的好处是 ......