C学习笔记——使用CL编译器

cl.exe 是一款控制 Microsoft C 和 C++ 编译器与链接器的工具。cl.exe 只能在 Windows 2000、Windows XP 和 Windows Server 2003 操作系统上运行。

一、编译器CL介绍

编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。

注意,所有编译器选项都区分大小写。

若要编译但不链接,请使用/c。 

语法:

CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
选项option具体内容可以查看 http://msdn.microsoft.com/zh-cn/library/fwkeyyhe%28v=vs.80%29.aspx
二、CL常见问题
     在我们使用CL编译我们的C或者C++文件的时候,通常会出现两个文件,一个是*.exe文件,另外一个是*.obj文件。可是你曾经是否想
过了解一下*.obj文件是干什么的吗?很惭愧,我原来没有,今天看到别人的博客,突然发现自己很没有这种探索意识,以后还是要多加强。
闲话少说,现在我们来了解一下*.obj文件你是干什么的。
  现在假定我们写了一个输出”hello world“的文件,文件名是test.c。打开我们的“CMD",使用CL test.c来编译,现在出现了一
个test.exe文件和test.obj文件。我们用记事本打开我们的test.obj文件,结果如下:

  在这里obj是目标文件,他是CL编译器把c文件编成机器代码的文件,这个文件是跨平台的,听说这里需要编译原理的知识,细节就不再
讲了(呵呵,我也讲不了)。
  而exe文件是通过link将它编译成你现在使用的系统能够识别的格式,我们用的是Windows,所以是exe文件。
  使用“cl /c”命令会只生成一个obj文件,没有exe文件,在这里需要使用link命令工具来生成exe文件。link是一个连接器,就是链
接机器语言转换成系统能识别的文件。使用命令”link test.obj"命令就产生了我们想要的test.exe文件。这下就可以在win平台运行了。 

      如果在cl命令后面加上2个参数/c和/P(p大写),就会多了1个test.i文件。然后我打开它,尽然有400多行,它会将我们的stdio.h中的内容

包含进来,但是其中有个细节,就是stdio.h文件中也包含了其他文件,所以全部展开后就400多行了!这里要说明的是#include<stdio.h>是编

译的时候是将stdio.h文件包含进来编译的。

        同时,在这里记录一下,这个也是今天才知道的,在C中 int长度不一定就是4位 它跟编译器有关 它不像java C# 长度是统一的

原文地址:https://www.cnblogs.com/bugY/p/2142086.html