gpt4 book ai didi

c++ - 包含库的语言设计问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:53:10 25 4
gpt4 key购买 nike

我正在编写一个编译器,它将我制作的一种语言(称为 SLang(目前这些文件落后了一些,并不重要))编译成 C++(最终是 ELF、Mach-O 和 PE,但是稍后会出现)。这是我的第一个编译器,想知道包含库的最佳方式吗?在 c/c++ 中,库只是通过复制和粘贴来导入(在最坏的情况下。我敢肯定那里会发生一些更复杂的事情)。这是编译器的最佳方式吗?对于无法匹配 gcc/visual c++/clang 预处理器的人,是否有更有效的方法?预先感谢您提供的任何帮助。需要说明的是,我并不是要具体的代码,我只是要关于如何做的想法。

旁注 如果有人知道任何特定于编译器的论坛或 irc channel ,我很想知道它们是什么。我找了又找,但还没有找到,除了特定的产品,例如 #gcc 或 #clang。

编辑:我在上面说错了。我知道只有头文件被粘贴到包含它的文件中,然后链接器将源文件与更多源文件和/或库链接起来。然而,我仍在寻找最有效的方式来包含库,而无需为 SLang 编写链接器

最佳答案

您没有提供您的编程语言的“Hello World”小示例,并且您直接链接,没有显示任何示例。

过去尝试做类似的事情。

你可能想看看 D,因为它是一个类似的已知案例:

http://dlang.org/index.html

大多数编程语言没有头文件,但如果编译为 C 或 C++,则可能会生成头文件。

您的编译器/编程语言如何处理单独的文件?您的编译器/编程语言如何定位单独的文件?

我建议您的编程语言支持 namespace 或模块。 “Plain C”和“PHP”最初没有 namespace 。

类似于:


文件:“CollectionExample.sprg”


namespace CollectionExample;

import Collections = "c:\\slang\\Collections.slib";

...

void main()
{
// do something with definitions in "Collections"
}
...

它可能生成如下 C++ 文件:


文件:“CollectionExample.hpp”


...

和:


文件:“CollectionExample.cpp”


#include "c:\\slang\\Collections.hpp"
#include "c:\\slang\\CollectionExample.hpp"
...

我还建议,在您的编程语言中,使用与主程序不同的库文件扩展名或文件后缀。

干杯。

关于c++ - 包含库的语言设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24753863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com