作者ikjhyu (还没想到)
看板CSSE
标题Re: 请问c++ include标头档的问题
时间Mon Jun 27 01:06:12 2005
※ 引述《ikjhyu (还没想到)》之铭言:
: ※ 引述《kaikaii (kai)》之铭言:
: : 我刚刚看过了stdio.h stdlib.h 里都没有include 其他.h档
: : 又看了VRC那个资料夹中 printf.c的实作
: : 我想他应该透过某个方法去连结到VRC中的 .c档 (stdio.h只是个介面 ?)
: : 因为VRC 这个资料夹的名字不能被变动
: : #include <x.h> 不就是将x.h里的内容 copy 到目前的程式里
: : 所以既然将x.h的内容都copy 到了程式中
: : 那将#include<x.h> 去掉 当然还是能执行 (不拿掉当然可以执行)
: : 以上是个人拙见 ^^"
: 本来是觉得
: 是不是include 了某些档(如stdio.h) 在编译的时候,
: compiler会自动的知道要去呼叫哪些档案
: 特别是被include档 (ex:stdio.h)里面定义的
: 一些原型函式的具体程式档案 (ex: printf.c)
: 所以就把他改成是把stdio.h的内容贴到程式里面 再把include<stdio.h>叙述拿掉
: 然後执行看看 结果也可以执行
: 所以应该不是compiler 自己会去找什麽档案来连结
: 而是在stdio.h里面的一些程式码会告诉compiler
: 该去连结什麽档案
: 问题是里面的程式码怎麽都看不出有什麽连结的讯息
: 而且好像没有"include"之类的叙述...
: 有点怪..
: 如果一般使用者只写函式原型档(.h) 而没有include 函式具体程式档(.c)
: 应该是不能执行的吧
抱歉上面的"compiler" 应该全部改为 linker
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.211.123
推 bxxl:linker会去指定的object files跟library 里面找, 59.120.57.250 06/26
→ bxxl:printf属於标准函式库,在library里面 59.120.57.250 06/26
→ bxxl:通常你看不到它的source code. 59.120.57.250 06/26
推 bxxl:还有自己写的程式一般也不会去include .c档, 59.120.57.250 06/26
b大侠你好
发现只要把函式具体内容档(.c档) 放到
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\crt\src里
而完全不用任何include信息 最多只要有include 原型档(.h)
执行後发现自己就会找到了
原来如此...
有点了解
不过不是很好解释...
至於那个include .c档
是因为有种coding style说通常把函式的原型宣告放.h
具体内容放.cpp or .c
而其实打开 stdio.h 之类的档案
也都是只有函式原型宣告而以说...
具体内容好像都没放在.h , 好像是放在.c
(当然,要放.h也是可以)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.211.123
※ 编辑: ikjhyu 来自: 61.59.211.123 (06/27 01:09)