tcc的短小精悍,编译速度快,以及独特的直接运行c代码功能,让tcc成为一个出色的编译器,横跨linux,windows平台。

笔者目前尚处于学习c(ANSI c/ISO c)阶段,为了加强手写代码的能力,于是就有了这篇编译器使用技巧。

在此累赘一句:

手写并编译链接代码,对于大多数人来说这是不可以想象的,笔者使用vc,万不得已的情况下才用vs,这对很多人来说也难以想象,

这么做是为了能期望能够编译出短小精悍或者操作系统无依赖的c代码,不依赖高版本的c运行时,例如vcruntime7,8,9或者更高版本。

也是期望自己能在恶劣环境下编写出一些代码。

把以下批处理保存成tcc.bat保存在tcc安装目录的根目录,例如笔者安装在d:\develop\tcc目录,以下代码就保存到d:\develop\tcc,最终文件绝对路径

d:\develop\tcc\tcc.bat

@echo off
echo ----------------------编译信息开始----------------------
tcc.exe %1 -vv -bench
echo ----------------------预处理开始------------------------
tcc.exe %1 -E
echo ----------------------预处理结束------------------------
echo ----------------------编译信息结束----------------------
echo 编译后生成程序所在目录%~dp1
echo 程序运行结果如下:
echo --------------------------------------------------------
%~n1
echo --------------------------------------------------------

然后把它添加到系统环境变量PATH中

方法:右键"我的电脑"-->"属性",系统变量,找到PATH变量,点击"编辑",按下HOME键,导航到行首,输入D:\develop\tcc;

以下是测试代码以及使用效果图

//print.h
#define PR printf
#define NL "\n"
#define D "%d"
#define D1 D NL
#define D2 D D NL
#define D3 D D NL
//file1.c
#include "print.h" main()
{
int a = , b = , c = ;
PR(D1,a);
PR(D2,a,b);
PR(D3,a,b,c);
}

设置随处都可以调用tcc的编译环境的更多相关文章

  1. 配置指定使用tcc编译器编译nim程序

    1.前言 nim是什么? nim是一门静态编译型语言,语法类似python,nim的代码被翻译成C代码再被C编译器编译成可执行文件.因此nim的可执行文件比较小,性能应该也不错. 最简单的nim程序就 ...

  2. 如何在Windows命令行(DOS界面)中调用 编译器 来编译C/C++源程序

    首先说明一下背景: 为什么要在DOS界面编译C/C++源程序?有很多现成的开发环境(IDE)如:vs, vc++等,这些开发环境集成了编译,调试,使用起来很方便,而且图形化操作界面,简洁明了.但是在开 ...

  3. Mac下设置Android源代码编译环境

    在Mac下编译Android最麻烦的就是设置Android的编译环境了,做完这一步基本上剩下的就是近乎傻瓜式的操作了.说起来也简单就三步,设置大小写敏感的文件系统.安装编译工具.设置文件系统同时能打开 ...

  4. WebStorm ES6 语法支持设置和ES6语法的JS文件编译为ES5语法文件

    ECMAScript 6是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2.0.ES6的目标,是使得JavaS ...

  5. msvc交叉编译:使用vcvarsall.bat设置命令行编译环境

    一直以来我只知道vc设置命令行编译环境的批处理命令是%VS140COMNTOOLS%/Common7/Tools下的vsvars32.bat,(%VS140COMNTOOLS%为定义vs2015公共工 ...

  6. CMake学习- 使用批处理设置编译环境

    批处理-.bat cd /d "%~dp0" mkdir build mkdir install cd build ..\cmake37\bin\cmake.exe -D WIN3 ...

  7. 使用SetLocaleInfo设置时间后必须调用广播WM_SETTINGCHANGE,通知其他程序格式已经更改

    uses messages; Procedure SetDateFormat; //设置系统日期格式var buf:pchar; i:integer; p:DWORD;begin getmem(buf ...

  8. MyEclipse中JDK运行环境和编译环境的设置

    一.设置myEclipse中新项目使用的JDK 1.运行环境   [Window]->[Preferences]->[Java]->[Installed JREs] 步骤:Add-- ...

  9. Sublime Text3:插件+快捷键+环境变量设置+C/C++编译环境

    环境变量配置 如果电脑里之前下载过Codeblocks或者Dev,找到文件根目录,打开MinGw(或者MinGw64),点开bin目录,将bin文件夹的目录复制下来(以Codeblocks为例,将文件 ...

随机推荐

  1. php返回json,xml,JSONP等格式的数据

    php返回json,xml,JSONP等格式的数据 返回json数据: header('Content-Type:application/json; charset=utf-8'); $arr = a ...

  2. DataTable/Array Linq查询,groupby

    DataTable Linq查询 1.查询DataRow IEnumerable<DataRow> q1 = from r in dt.AsEnumerable() == select r ...

  3. 【uTenux实验】写在开始实验之前

    1.使用的uTenux内核代码:http://www.uloong.cc/cn/download/uTenux_V1.6.00r180.zip 2.uTenux的特性: 1.微内核  2.开放源码.完 ...

  4. Mathematica 计算矩阵的伴随矩阵

    AdjointMatrix[M_] := Module[{Ma, B, n, i, j},    Ma = Minors[M];    B = Ma;    n = Dimensions[M][[1] ...

  5. JVM参数(二)参数分类和即时(JIT)编译器诊断

    在这个系列的第二部分,我来介绍一下HotSpot JVM提供的不同类别的参数.我同样会讨论一些关于JIT编译器诊断的有趣参数. JVM 参数分类 HotSpot JVM 提供了三类参数.第一类包括了标 ...

  6. git branch几个简单操作

    1.git branch  该命令会列出当先项目中的所有分支信息,其中以*开头的表示当前所在的分支.参数-r列出远程仓库中的分支,而-a则远程与本地仓库的全部分支. 2.git branch deve ...

  7. CRM 权限与分派不一样问题

    问题描述: 1 userA用户 为 区域经理; 2  区域经理(角色) 为 分派给userA的安全角色; 3  区域经理(角色) 设置了对实体 客户 的读权限为 业务部门级; 按正常来说userA 应 ...

  8. 顽皮的小球II

    感谢世外苏子恒同学提供   uses crt; var   x,y,xd,yd,xb,yb:shortint;   k:char; procedure intro; begin   clrscr;   ...

  9. X-Cart 学习笔记(一)了解和安装X-Cart

    目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 一.了解 ...

  10. 设置arc/非arc

    1,选择项目中的Targets,选中你所要操作的Target,2,选Build Phases,在其中Complie Sources中选择需要ARC的文件双击,     并在输入框中输入:-fobjc- ...