zoukankan      html  css  js  c++  java
  • 头文件如何来关联源文件

    源文件中有#include<~.h>的预处理命令,但是头文件中没有源文件的信息,那么头文件如何来关联源文件呢,曾经这个问题困扰着我。

    这个问题实际上是说,已知头文件“a.h”声明了一系列函数,“b.cpp”中实现了这些函数,那么如果我想在“c.cpp”中使用“a.h”中声明的这 些在“b.cpp”中实现的函数,通常都是在“c.cpp”中使用#include “a.h”,那么c.cpp是怎样找到b.cpp中的实现呢?其实.cpp.h文件名称没有任何直接关系。#include预处理就是完成了一个复制 并插入代码的工作。编译的时候,并不会去找b.cpp文件中的函数实现,只有在link的时候才进行这个工作。我们在b.cppc.cpp中用#include “a.h”实际上是引入相关声明,使得编译可以通过,程序并不关心实现是在哪里,是怎么实现的。源文件编译后成生了目标文件(.o.obj文件),目标 文件中,这些函数和变量就视作一个个符号。在link的时候,需要在makefile里面说明需要连接哪个.o.obj文件(在这里是b.cpp生成 .o.obj文件),此时,连接器会去这个.o.obj文件中找在b.cpp中实现的函数,再把他们buildmakefile中指定的那个可以 执行文件中。通常,编译器会在每个.o.obj文件中都去找一下所需要的符号,而不是只在某个文件中找或者说找到一个就不找了。因此,如果在几个不同文件中实现了同一个函数,或者定义了同一个全局变量,链接的时候就会提示“redefined”

  • 相关阅读:
    机器码信息
    Q: ossfs挂载时如何设置权限?
    js获取url信息
    快递在线下单
    nginx反向代理与负载均衡配置
    mono-apache配置
    Migrating an Existing Website from SQL Membership to ASP.NET Identity
    C# GUID转换成16位字符串或19位数字并确保唯一
    图片服务器
    王宝强离婚宋喆遭扒 黑客告诉你哪些个人信息需要保护
  • 原文地址:https://www.cnblogs.com/kevinGaoblog/p/2452951.html
Copyright © 2011-2022 走看看