我见过类似的问题,但他们仍然没有意义,我的猿类大脑。
这里有一个例子。如果我在名为bob.h
的头文件中声明了一个函数:void PrintSomething();
并且在.cpp
文件中声明了一个函数:void myclass::PrintSomething(){std::cout<<“hello”;}
。我在另一个.cpp
文件(例如frank.cpp
)中看到过这样的人,它只包含bob.h
头,它只有声明(里面没有代码),而不包含带有代码的.cpp
。但令我震惊的是,当他们调用frank.cpp
中的printSomething()
函数时,它使用了bob.cpp
中的代码并打印“hello”。怎么做?当我只包含了.h
文件时,它如何打印在.cpp
文件中添加的“hello”,而它只是一个声明,它对“hello”只字不提?我也看过编译过程和链接过程,但它就是不坚持。
如果我现在在我的frank.cpp
文件中说:void myclass::printsomething(){std::cout<<“bye”;}
并在我的main.cpp
中包含bob.h
文件,并调用printsomething()
函数,那么它会打印“hello”或“bye”吗?电脑是灵媒还是什么?这个概念是我在C++学习过程中没有掌握的一件事。
提前道谢。
当您包含bob.h
时,编译器就拥有了它需要知道的关于printSomething()
的一切,它只需要函数的声明。frank.cpp
不需要了解定义printSomething()
的bob.cpp
。
所有单独的cpp
文件都输出编译器生成的对象文件。在它们被粘在一起之前,它们本身并没有什么作用,这是连接者的责任。
链接器将获取所有对象文件并填充缺少的部分:
链接器对话:
嘿,我看到frank.obj
使用了printSomething()
,而我在该对象文件中看不到它的定义。
让我们检查其他对象文件。
在检查bob.obj
时,我可以看到它包含了printSomething()
的可用定义,让我们使用它。
这当然是简化的,但简而言之,这就是链接器的作用。
完成这些之后,您就得到了可用的可执行文件。
如果我现在在frank.cpp文件中说:void myclass::printsomething(){std::cout<<“bye”;}
并在我的main.cpp
中包含bob.h
文件,并调用printsomething()
函数,那么它会打印“hello”或“bye”吗?电脑是灵媒还是什么?
链接器会找到printsomething()
的两个定义,并会发出一个错误,它无法知道哪个定义是要选择的正确定义。
我正在编写一个小的Java库,其中包含我通常在大多数android应用程序中包含的相关代码。我决定将库导出为一个jar文件,然后将该文件放到我未来项目的libs文件夹中。 null 现在,当我在我的一个android应用程序中使用这个jar时,除了Doc部分之外,所有的一切都像预期的那样运行。当我悬停在我的库的类和方法上时,我看不到我编写的文档注释。 Q1:我是不是又少了一步? Q2:jar文件应
我想创建一个模型jar文件,但不包括源代码。可能吗?默认情况下,Repast模型安装程序包含源代码,但我想对模型的接收者隐藏它。
SSI 指令为用户提供在 Web 服务器处理之前将一个文件的内容插入到另一个文件的方法。ASP 只使用这一机制的 #include 指令。要在 .asp 文件中插入一个文件,使用下面的语法: <!--#include virtual | file ="filename"--> virtual 和 file 关键字指示用来包含该文件的路径的类型,filename 是您想包含的文件的路径和名称。 被包
文件包含 可以使用source和.关键字,如: source ./function.sh . ./function.sh 在bash里,source和.是等效的,他们都是读入function.sh的内容并执行其内容(类似PHP里的include),为了更好的可移植性,推荐使用第二种写法。 包含一个文件和执行一个文件一样,也要写这个文件的路径,不能光写文件名,比如上述例子中: . ./functio
include 标签是模板开发中最最常用的标签之一,它可以在模板中包含其它模板的内容;用法如下: <include file='模版1,模版2,...' /> 请不要在include 的模板文件中使用模板布局或者模板继承 file 属性的定义规则: 以前台simlpeboot3主题为例: 控制器/操作 <include file="public/header" /> <!-- 以上表示包含当前
tc_include tc_include是前台模板包含文件的方法,用于替换原来的include的标签,实现更多功能 用法: <tc_include file="Public:nav"/> <!--加载的是当前模板的Public/nav.html--> <tc_include file="Public/nav"/> <!--加载的是当前模板的Public/nav.html--> <tc_inclu