C学习笔记——使⽤CL编译器
< 是⼀款控制 Microsoft C 和 C++ 编译器与链接器的⼯具。cl.exe 只能在 Windows 2000、Windows XP 和 Windows Server 2003 操作系统上运⾏。
⼀、编译器CL介绍
编译器产⽣通⽤对象⽂件格式 (COFF) 对象 (.obj) ⽂件。链接器产⽣可执⾏⽂件 (.exe) 或动态链接库⽂件 (DLL)。
注意,所有编译器选项都区分⼤⼩写。
若要编译但不链接,请使⽤/c。
语法:
CL [] [option | file]... [] [@command-file] [/]
选项option具体内容可以查看
⼆、CL常见问题
在我们使⽤CL编译我们的C或者C++⽂件的时候,通常会出现两个⽂件,⼀个是*.exe⽂件,另外⼀个是*.obj⽂件。可是你曾经是否想
过了解⼀下*.obj⽂件是⼲什么的吗?很惭愧,我原来没有,今天看到别⼈的博客,突然发现⾃⼰很没有这种探索意识,以后还是要多加强。闲话少说,现在我们来了解⼀下*.obj⽂件你是⼲什么的。
  现在假定我们写了⼀个输出”hello world“的⽂件,⽂件名是test.c。打开我们的“CMD",使⽤CL test.c来编译,现在出现了⼀
个⽂件和test.obj⽂件。我们⽤记事本打开我们的test.obj⽂件,结果如下:
  在这⾥obj是⽬标⽂件,他是CL编译器把c⽂件编成机器代码的⽂件,这个⽂件是跨平台的,听说这⾥需要编译原理的知识,细节就不再讲了(呵呵,我也讲不了)。
  ⽽exe⽂件是通过link将它编译成你现在使⽤的系统能够识别的格式,我们⽤的是Windows,所以是exe⽂件。
  使⽤“cl /c”命令会只⽣成⼀个obj⽂件,没有exe⽂件,在这⾥需要使⽤link命令⼯具来⽣成exe⽂件。link是⼀个连接器,就是链
编译器错误
接机器语⾔转换成系统能识别的⽂件。使⽤命令”link test.obj"命令就产⽣了我们想要的⽂件。这下就可以在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# 长度是统⼀的