- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想知道当 included 或 includee 仅作为软链接(soft link)位于同一目录时,引用的包含会发生什么情况。
想象一下三个 header ,a
、b
和c
,以及一个目录d
。 a
和 b
在 CWD 中,c
在 d
下。现在想象一下 d
下的一个软链接(soft link)指向 b
(名为 b
)。
如果只使用引用的包含并且c
包含b
,其中包含a
,是否会搜索a
在目录d
中,这是到b
的软链接(soft link)的位置,还是在CWD 中的b
的实际物理位置?
我读过 a page at MSDN但我找不到明确的答案。 “与包含#include 语句的文件相同的目录”是什么意思?
最佳答案
解决软链接(soft link)的机制不考虑当前工作目录,而是解决链接所在的目录。让我用一个更自然的例子来演示,如果你试着阅读 /usr/include/X11/Xlib.h
(例如,这是编译器将在 Linux 中搜索 <X11/Xlib.h>
的地方之一)并且碰巧 /usr/include/X11
是到 ../../opt/X11/include
的软链接(soft link), 算法解析为 /usr/include/../../opt/X11/include
(或者实际上 /opt/X11/include
最后,在解决所有路径组件之后),独立于您的当前目录。当前或根目录是在您的 u 区(专用于您的进程的操作系统资源的一部分)中保留的 inode 表条目,以便启动机制或将名称解析为 inode 条目任务,最终处理 inode您要打开的文件。这对编译器来说是透明的,所以尽管有人说它是实现定义的,但碰巧所有 posix 系统都有一个简单的机制来搜索系统相关的目录列表以查找最终文件。但是软链接(soft link)机制是透明的,您不需要期待特殊的编译器行为。
编译器唯一会考虑其当前工作目录的情况是,如果您真的强制它这样做,如:
#include "./header.h"
或
#include "../../includes/myprojectheader.h"
如果软链接(soft link)指向一个文件(而不是一个目录),如本例所示:
假设您的安装已将 ncurses 包含在一个子目录中(比方说 ncurses
)在 /usr/include
中, 而您想使用 #include <ncurses.h>
, 所以你安排了以下内容:
ln -s ncurses/curses.h curses.h
您将获得指向文件 /usr/include/curses.h
的链接指向ncurses/curses.h
然后当你打开/usr/include/curses.h
内核到达路径的最后一部分(curses.h
)并发现它是一个符号链接(symbolic link),因此它替换最后一部分(因为指向的链接不是绝对的)并将其替换为ncurses/curses.h
。 , 并打开文件 /usr/include/ncurses/curses.h
.
关于c++ - include 如何使用软链接(soft link)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49557565/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
最近我看到这篇文章,它对 Jenkins 进行 GC 调优,其中讨论了这个参数:-XX:SoftRefLRUPolicyMSPerMB https://jenkins.io/blog/2016/11/
我在跑 means2来自 scipy,虽然我收到一条错误消息: /usr/lib/python2.7/dist-packages/scipy/cluster/vq.py:600: UserWarnin
环境为ubuntu 16.04 64bit,go版本go1.12 linux/amd64 我正在尝试将我的 golang 项目从 gopath 切换到 gomodule。我项目导入的包之一是使用cgo
urplus(多余) wave(浪) Get lost (迷路) nature(本性) Rely on 依赖 Soft cancer (软癌) Devour.(吞噬) ink into
我正在尝试安装 openal-soft在 Ubuntu Focal 上,但没有运气。 这是我要安装的软件包: https://packages.ubuntu.com/source/focal/open
ln -s /dir1/file1 /dir2/file1 我想在目标 dir1 中创建一个与 dir2 中的源文件名相同的软链接(soft link) 如何在目标路径中不输入 file1 名称的
我目前正在研究调试器。我读到调试器有软件断点(apparently 这些是最常用的断点)。这些通过将操作码的第一个字节替换为 Int 3(操作码 0xcc)来工作。 我已经读过程序的文本(/code)
根据 keyword module 的文档,Python 3.9 中添加了两个新成员: issoftkeyword softkwlist 然而,他们的文档并未透露任何有关其目的的信息。在What's
我正在使用 OpenAL-Soft对于一个项目,现在我正在尝试决定是否需要实现 OpenAL 源池。 源池有些麻烦(我需要编写代码来“分配”源,以及以某种方式决定何时可以“释放”它们),但如果 Ope
当我说“软”事务时,我的意思是不涉及某些数据库中的持久性,而只是逻辑对象修改。故事是这样的。 普通的 JAVA 应用程序,没有框架,可能有很多线程。 对象Ob在其单独的线程中启动doSomething
我有几百个由不同工具生成的数据库,并存档在一个中心区域。所有文件都以压缩格式存储。我尝试通过在 var 目录中创建软链接(soft link)将这些数据库导入 mysql 服务器,但我在 mysql
在 Linux 中,我如何找到链接到特定目标目录或文件的所有软链接(soft link)? 最佳答案 您可以使用find 的-lname 参数: find . -lname linktarget 关于
创建了名为D1的目录,并在同一目录中创建了文件f1 创建了一个名为 D2 的空目录,为 d1(目录)中的 f1(文件)创建了软链接(soft link)并将其存储在 d2(目录)中。 我使用的命令:l
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我可以将软链接(soft link)存储在apache文档根目录(/var/www/html)下并将实际文件保留在文档根目录之外的另一个文件系统中吗?我的硬盘中有 4 个文件系统:3 个 NTFS 和
Linux 命令:我正在使用以下命令,该命令返回目录中的最新文件名。 ls -Art | tail -n 1 当我运行此命令时,它会返回最新更改的文件,这实际上是软链接(soft link),我想忽略
红帽 5.5gcc 版本 4.1.2 我有一个名为 lib 的目录,在该目录中我有我们在使用客户 API 时从客户那里获得的所有共享库(大约 30 个)。我们与此 API 链接。 目录结构: /usr
我有一个 WPF 应用程序使用 INotifyPropertyChanged 来指示属性更新。我喜欢它的一点是,它使您能够在不调用所有 setter 代码的情况下发出属性更改信号。当您有两个相互更新的
我在系统的三个不同路径中有相同的共享库。假设路径是 PATH1、PATH2 和 PATH3。 共享库名称是 libmylib.so 现在,如果我在 PATH1 中用损坏的软链接(soft link)替
我是一名优秀的程序员,十分优秀!