首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

工作表单元格超链接出错,可能是浏览器搞的

标签:Excel应用问题 我们可以在工作表单元格中设置超链接,这样,当单击该单元格中的文本时,就会跳转到链接所指向的位置,例如工作簿中的其他工作表。...然而,今天在我制作工作表目录时,设置好链接后,竟然跳出如下图1所示的错误消息框。 图1 在Excel中捣鼓了半天,才发觉不是Excel的问题,而是与浏览器有关。也就是说,没有将IE作为默认浏览器。...图2 3.在弹出的“注册表编辑器”的左侧窗口中,导航到Classes目录下的.html,路径如下: HKEY_CURRENT_USER\SOFTWARE\Classes。 4....如下图3所示,在右侧窗口中,右键单击“(默认)”,选取“修改”命令,将“数值数据”的值修改为“Htmlfile”。 图3 5.关闭注册表编辑器。然后,重新打开工作簿,超链接可用了。

65720

C语言代码是怎样生成可执行程序的呢? ---- 编译和链接

翻译环境,在这个环境中源代码被转换为可执⾏的机器指令(⼆进制指令)。 2. 执⾏环境,它⽤于实际执⾏代码。 2. 翻译环境 抛出疑问: 翻译环境是怎么将源代码转换为可执⾏的机器指令的呢?...这个过程是递归进⾏的,也就是说被包含的头⽂件也可能包含其他⽂件。 删除所有的注释 添加⾏号和⽂件名标识,⽅便后续编译器⽣成调试信息等。 或保留所有的#pragma的编译器指令,编译器后续会使⽤。...语义分析 由语义分析器来完成语义分析,即对表达式的语法层⾯分析。编译器所能做的分析是语义的静态分析。静态语义分析通常包括声明和类型的匹配,类型的转换等。这个阶段会报告错误的语法信息。...总结 文本重点介绍了 C语言代码是怎么生成可执行程序的, 其中翻译环境主要有两大过程, 编译和链接, 编译主要分为三个过程, 分别为预处理, 编译和链接....在此过程中会发现被调用的函数未被定义。需要注意的是,链接阶段只会链接调用了的函数/全局变量,如果存在一个不存在实体的声明(函数声明、全局变量的外部声明),但没有被调用,依然是可以正常编译执行的。

8510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《黑神话悟空》的着色器编译怎么这么久?到底什么是着色器编译?

    计算机对图像的处理主要是在GPU中完成的。在早期的GPU中,图形渲染被分为几个预定义的阶段,每个阶段执行特定的操作,而这些操作是不可编程的,即开发者不能修改或替换这些阶段的具体实现。...而这种放到GPU中跑的,用来自行实现一些效果的代码,英文名叫做shader,中文名叫做着色器。 这个着色器的翻译也有点难懂。让我们从英文出发尝试去理解。...而在一些早期游戏中,为什么没有这种游戏刚打开就出现的编译器着色环节呢? 正所谓人看到什么,是程序员决定的。不告诉你我在编译着色器不等于我没有编译着色器。...而之所以在很长的一段时间内,没有提前编译着色器;是因为当时的花活并不多,shader程序的编译速度很快,根本就没有必要提前编译。大多数都是获取游戏材质的时候就顺手编译了。...通过我的介绍,相信大家已经了解了什么是着色器以及为什么要编译着色器。 你对于黑神话悟空这款游戏有什么想说的?你觉得对局BOSS的强度怎么样?欢迎在评论区留言。

    61710

    gcc编译时,链接器安排的【虚拟地址】是如何计算出来的?

    目录 问题描述 ELF 文件格式 地址转换和内存映射 Linux 中的内存重复映射 小结 问题描述 昨天下午,旁边的同事在学习Linux系统中的虚拟地址映射(经典书籍《程序员的自我修养-链接、装载与库》...例如下面这段C代码: 首先编译出32位的可执行程序(为了避开一些与主题无关的干扰因素,采用了静态链接): gcc -m32 -static test.c -o test 编译得到ELF格式的可执行文件...很久之前总结过这篇文章:《Linux系统中编译、链接的基石-ELF文件:扒开它的层层外衣,从字节码的粒度来探索》,里面详细总结了ELF文件的内部结构。...这里就不再赘述了,只要记住2点: 从编译器的角度看,ELF 文件是由很多的节(Section)组成的; 从程序加载器的角度看,ELF 文件是又很多的段(Segment)组成的; 其实它俩没有本质区别,只不过是链接器在链接阶段...再来看一下代码段的虚拟地址:在执行gcc指令的的时候,链接器把代码段的虚拟地址安排在0x0804_8000处: 也就是说:当CPU中(或者说程序代码中),使用0x0804_8000 ~ 0x0804_

    1.3K41

    生产环境出问题了,测试环境是好的,怎么办?拉稀了!用这个方法重写浏览器源代码进行调试!

    这个不难理解,背过八股文都都知道,vite是利用现代浏览器对ES模块的原生支持,以及HTTP/2服务器推送等技术,实现了快速的开发服务器和按需编译。...然后就涉及到一个浏览器安全性问题了,反正就是ES模块在浏览器上不允许被更改。 然后其他编译工具,webpack、Parcel 等等这种是可以被修改的。...LiveEdit 失败:The top-level of ES modules can not be edited 关于这个错,在百度上搜了五花八门的都没找到,那就说怎么让浏览器支持ES模块修改吧...这个时候你要修改什么东西,浏览器是实时更新的。 这调试不就方便多了,这个打包后的源代码,虽然有点难看懂,但是对于前端来说都不是事儿了。...你能知道怎么调试,就能查漏补缺,慢慢找到问题所在,找到后再去改项目不就轻松多了。 然后这个地方有启用和清除配置。 浏览器上的源代码从服务器上拿过来缓存在浏览器的。

    34900

    为什么说c,c++不能跨平台,编译器是在计算机操作系统上的吗,难道说编译器不在c,c++程序里吗?

    ,在具体软件的核心架构上代码是一致的,和平台相关的代码还是需要单独去实现,就拿简单的线程的实现,不同的操作系统的接口就存在很大的差异,所以完全意义上的跨平台方面距离高级编程语言还是存在差异。...谈到编译器就需要了解程序执行的原理,现在计算机的架构都是基于冯诺依曼的架构来完成的,具体执行的格式都是二进制的格式,不同的操作系统生成不同格式的二进制文件,从代码到可执行的二进制代码之间还需要有一种工具存在...,这就是编译器存在的价值,编译器的执行中也是分为几个阶段,对于linux下C语言编译过程有所了解的话,都会发现后缀为 .c 的程序文件首先转化成 .o 的中间文件,然后经过 .o 转化成可执行的二进制文件...编译器其实就是一种转化工具,将程序转化成能够运行的二进制文件,一般而言C/C++编译器是可以通用的,不同的操作系统使用不用的编译器底层。 ?...编译器是一种工具包的集合,内部的实现也涉及到C/C++的编程,编译器的通常说的编程代码还是存在一定的差异,编译器是为代码转化做服务的,真正实现跨平台的基础部件编译器算是一种,因为不同的操作系统或者计算机架构需要具体的对应实现

    2.8K10

    什么是交换机?什么是路由器?网络通信的底层原理到底是怎么回事?不清楚的程序猿快来科普下吧!

    那么其中的发现过程到底是怎么样的呢?接下来我们一一的拆解 1.1 网线直连   计算机与计算机直接要实现相互连接,最直接的方式就是通过网线直连的方式。   ...在上面的动态图中我们可以看到 40 节点要连接 42 节点,那么需要先通过ARP广播获取到 42的MAC地址,这个过程中也会广播到41,只是会失效。...1.5 交换机(Switch)   其实集线器加网桥的这种方式已经过时了,我们现在使用的都是交换器,可以把交换器看成是集线器加网桥的组合。...但是交换机同样只能处理同一个网段的节点,而且如果全世界的机器都是通过交换器来实现互联的话,在ARP广播的时候就会产生广播风暴.这时引入了路由器的概念。...1.6 路由器(Router) 网线直连,同轴电缆,集线器,网桥,交换机的特点: 连接的设备必须在同一网段 连接的设备处在同一广播域 路由器: 可以在不同网段之间转发数据 隔绝广播域 可以路由器单独使用

    40020

    《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序

    第四章 移动应用开发 本章小结: 1**、本单元学习目的** 掌握Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序。...第三方模拟器Genymotion就是基于VirtualBox,它的个人版是免费的。...通过R文件,在程序中可以引用各种资源,比如:字符串、图标、样式等等。每一个资源在R文件中都有唯一的编码(id号)。在程序中要引用资源的时候,都是通过这个id号进行访问。...构建工具是一个把源代码生成为可执行应用程序的过程自动化程序,其中包括编译、连接、代码打包、生成可执行文件等步骤。在Android Studio中,使用Gradle来构建项目。...在Gradle脚本里有一项是buildTypes。它默认包含debug和release这两种构建类型,并且还可以在其中设定应用是否需要混淆代码,以防止反编译。

    30210

    【C++】踏上C++学习之旅(四):细说“内联函数“的那些事

    但是宏函数的写法实在是太容易出错了,而且使用宏函数还有以下的缺点: 代码的可读性差 不方便调试,复杂 了解了上述场景之后,我们就来了解一下C++的"祖师爷"是如何攻克这个难关的。...那我们该怎么查看这个现象呢?可以通过查看汇编代码,来判断!!! 2.1 内联函数在代码中的体现 (VS)查看方式: 在release模式下,查看编译器生成的汇编代码中是否存在call Add。...可以看到的是对于普通函数的调用编译器是根据call指令来执行的。而对于内联函数来说,C++编译器则是直接将函数体里面的内容转换成汇编代码替换到了函数调用的地方。 3....内联函数的特性(重点) 1. inline是一种以空间换时间的做法,如果编译器将函数当成内联函数处理,在编译阶段,会用函数体替换函数调用,缺陷:可能会使目标文件变大,优势 :少了调用开销,提高程序运行效率...还有一个重要的点是我们定义和声明内联函数时,得两边都用inline,否则,因为inline的作用会使得函数的地址变成代替函数体的代码段的地址,在链接阶段会因为找不到这个函数而报错!

    9010

    【c++】内联-引用-重载

    以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率 如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用...以vs2019为例 1.3 内联函数的特性 inline是一种以空间换时间的做法,如果编译器将函数当成内联函数处理,在编译阶段,会用函数体替换函数调用 缺陷:可能会使目标文件变大 优势:少了调用开销...,提高程序运行效率 inline对于编译器而言只是一个建议,不同编译器关于inline实现机制可能不同,一般建议:将函数规模较小(即函数不是很长,具体没有准确的说法,取决于编译器内部实现)、不是递归、且频繁调用的函数采用...在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接 1....那么怎么办呢? 2. 所以链接阶段就是专门处理这种问题,链接器看到a.o调用Add,但是没有Add的地址,就会到b.o的符号表中找Add的地址,然后链接到一起 3.

    9010

    【C++初阶】--- C++入门(中)

    在预处理阶段头文件会展开,汇编时编译器会帮我们检查函数是否合乎语法(检查语法)。...缺省值必须是常量或者全局变量; C语言不支持(编译器不支持); 上述第二点,为什么只能在函数声明时给缺省值? 因为缺省参数是在调用的阶段使用的。...在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接。...那么怎么办呢? 所以链接阶段就是专门处理这种问题,链接器看到a.o调用Add(),但是没有Add()的地址,就会到b.o的符号表中找Add()的地址,然后链接到一起。...那么链接时,面对Add()函数,链接接器会使用哪个名字去找呢?这里每个编译器都有自己的函数名修饰规则。

    13010

    万字整理 | 深入理解编译系统

    第一个编译器是怎么来的? 在此我们提前回答一个问题,编译器也是程序,也需要被编译,那么第一个编译器是怎么来的,是谁编译的呢。...同理你会问那么第一个B语言编译器是怎么来的呢,第一个B语言编译器是用BCPL语言书写的,是用BCPL语言编译器编译的。一直这么追问下去,第一个编译器是怎么实现的呢?...下面我们说一说什么是组建,假设我们有个软件由十几个文件夹几百个C文件组成,我们每次想编译时该怎么做,一个一个地编译每个C文件,然后再把所有的中间目标文件静态链接、动态链接起来生成最终的可执行程序,每次都手工输入那么多命令是多么麻烦啊...例如有一次服务器编译出错了,我说编译出错了,有一个同事说编译没有错,是打包出错了。...还有一次有个同事编译出错了,让我帮忙看看是怎么回事,我看了之后说编译过程没问题,链接阶段出错了,找不到符号,他一脸疑惑的说,这编译不是出错了吗。

    80810

    JVM之类加载阶段详解

    由于本文重点阐述的是类加载的阶段,故下篇文章对类加载器进行阐述。 3.哪个Class文件? 需要程序指定 类/接口的全限定名(包名+类/接口名)。...解析 该阶段是将符号引用转换为直接引用的过程 注意能够在类加载阶段也就是解析阶段中可以直接转换为直接引用的这个步骤也叫作静态链接,因为某些方法,字段是可以在编译器就可以确定的(比如:重载方法,这个是可以在编译期确定调用的是哪个方法...如果我通过类型强转的方式改变静态类型的话这个可以在编译器确定吗也就是说它属于静态链接吗?...编译的时候由于能够确定变量的静态类型,所以编译时可知,也就是为什么叫做静态链接的原因。接下来解释下为什么能够确定变量的静态类型并且是怎么确定的。 首先明确一个点:静态类型和实际类型都是可以改变的。...一般是使用定义该类的类的类加载器,怎么理解(比如A中定义了一个B类,那么B类的类加载器是用的A类的类加载器)。

    71210

    前端工程化之CICD那点破事

    “丢”到服务器,解压上传的文件,最后配置下Nginx即可访问到该项目的资源,石器时代我们是这样走流程的,流程如下 我们大概需要完成以下操作 本地执行 npm run build 构建项目,压缩编译好的资源文件...,造成程序出错等 思考:?‍?...啊乐同学:树酱如果是CI过程中出错是怎么样的情况?...项目在构建与测试多多少少会出现失败的情况,下面是一个实际的单元测试出错例子,一旦出错则中断CI行为(因为树酱将单元测试命令配置在install阶段) image.png image.png 以上是一个简单的...3.2.2 模式二:jenkins流水线配置 这里主要介绍jenkins流水线配置的使用,流水线的代码定义了整个的构建过程, 他通常包括构建, 测试和交付应用程序的阶段,下面是路径和仓库的配置

    1.4K31

    h文件和c文件的区别include本身只是一个简单的文件包含预处理命令,即为把include的后面文件放到这条命令这里,除此之外,没有其它的用处(至少我也样认为).

    %d\n",test); } 头文件内容如下: 现在以这个例子来讲解编译器的工作: 1.预处理阶段:编译器以C文件作为一个单元,首先读这个C文件,发现第一句与第二句是包含一个头文件,就会在所有搜索路径中寻找这两个文件...如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。...,只是编译器的一个前驱处理程序). .h .c不见得是浮云,脱离了编译器谈这些没有任何的意义,抛开更深层次的这些,比如说,OS如何启动这个文件,PE结构(linux 下为elf)等等 编译器首先要识别这个文件才可能去编译它...最后一步就是链接的阶段了,链接器把项目中所有.cpp生成的所有.obj链接起来,在这一步中,它就明确了f(int)函数的实现所在的地址,把main.obj中空着的这个地址位置填上正确的地址。...不明白那就多说几句了,我们在学编译原理的时候都知道,编译器是分阶段进行的,每一个阶段将源程序从一种表示转换成另一种表示,一般情况下都进行如下顺序:源程序->词法分器->语法分析器->语义分析器->中间代码生成器

    1.6K20

    Go 静态编译及在构建 docker 镜像时的应用

    如果没有链接库,那么当开发者需要用到上述标准函数时有下面几种方式实现,第一种是开发者自己实现一遍,可想而知这样开发效率很低,而且容易出错;第二种是编译器解析到使用了标准函数时自动生成相应的代码实现,这种方式将给编译器增加显著的复杂性...动态链接库避免了上述问题,应用程序在编译时只记录一些动态链接库的基础信息,在加载应用程序但还没有运行时会将依赖的动态链接库中的函数与内存中的程序链接起来形成一个完整的程序,所有引用同一个动态链接库的可执行文件共用这个库中的代码和数据...因为程序不引用任何由 multvec.o 定义的符号,所以链接器就不会复制这个模块到可执行文件。链接器还会复制 libc.a 中的 printf.o 模块,以及许多 C 运行时系统中的其他模块。...静态编译是在编译时就将依赖的静态链接库复制到可执行文件中,这样在应用程序运行起来后无需依赖外部的库,只需要单一的可执行文件即可运行,但缺点是应用程序体积相对较大,程序运行的越多重复占用的内存浪费越多。...通过链接参数实现静态编译 假如我希望在代码中调用 C 函数,但又希望执行静态编译应该怎么做?也就是说我必须开启 CGO 但又希望进行静态编译。

    11610

    【C语言】预处理(预编译)详解(上)(C语言最终篇)

    一、预定义符号    学习本篇文章的内容推荐先去看前面的编译和链接,才能更好地理解和吸收,文章链接:【C语言】编译和链接(编译环境和运行环境)    C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的...%s STDC就与编译文件的编译器有关了,如果编译当前文件的编译器完全遵守了ANSI C标准,那么它将会被定义,并且值为1,打印时需要使用%d,如果该编译器不完全遵守ANSI C标准,那么STDC这个预定义符号就没有被定义过...   接着我们就可以使用STDC这个预定义符号,来判断我们的编译器是否完全遵循ANSI C,如下: #include int main() { printf("STDC: %...,就会出错    那么我们上面写的这个宏是否就完全正确了呢?...,这个时候就要使用函数 宏可能会带来运算符优先级的问题,导致程序容易出错,比如忘记对参数加上(),或者忘了给整个式子加上()都可能出现预期以外的结果 3.宏和函数的命名约定    ⼀般来讲函数的宏的使⽤

    12910

    C++_内联函数

    定义 inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧 的开销,内联函数提升程序运行的效率。...所以可以进行调试) 不容易出错,写法和普通函数一样 特性: inline是一种以空间换时间的做法,如果编译器将函数当成内联函数处理,在编译阶段,会用函数体替 换函数调用,缺陷:可能会使目标文件变大,优势...:少了调用开销,提高程序运行效率。...inline对于编译器而言只是一个建议,不同编译器关于inline实现机制可能不同,一般建议:将函数规 模较小(即函数不是很长,具体没有准确的说法,取决于编译器内部实现)、不是递归、频繁调用的函数 采用...(因为预编译阶段进行了替换) 导致代码可读性差,可维护性差,容易误用。 没有类型安全的检查 C++中用什么方法代替宏? 常量定义 换用const enum 短小函数定义 换用内联函数

    31230

    C++心决之命名空间、重载函数和引用

    在 C/C++ 中,一个程序要运行起来,需要经历以下几个阶段: 预处理、编译、汇编、链接 。 1....实际项目通常是由多个头文件和多个源文件构成,而通过 C 语言阶段学习的编译链接,我们 可以知道,【当前 a.cpp 中调用了 b.cpp 中定义的 Add 函数时】,编译后链接前, a.o 的目标...所以链接阶段就是专门处理这种问题, 链接器看到 a.o 调用 Add ,但是没有 Add 的地址,就 会到 b.o 的符号表中找 Add 的地址,然后链接到一起 。...那么链接时,面对 Add 函数,链接接器会使用哪个名字去找呢?这里每个编译器都有自己的 函数名修饰规则。 4....如果两个函数函数名和参数是一样的,返回值不同是不构成重载的,因为调用时编译器没办 法区分。 6.

    12310
    领券