代码之家  ›  专栏  ›  技术社区  ›  Rômulo Ceccon

便携式图书馆的语言选择

  •  4
  • Rômulo Ceccon  · 技术社区  · 16 年前

    我想写一个库,它将与运行在现代操作系统(如Windows、Linux和OS/X)上的其他程序动态链接(即,它将被部署为 .dll .so 模块)。

    在这种情况下,最合适的语言是什么?我应该坚持纯C吗?或者C++也是可以的?

    5 回复  |  直到 16 年前
        1
  •  14
  •   Igor Krivokon    16 年前

    您可以使用C或C++来实现,但我建议在纯C中定义接口。

        2
  •  2
  •   Jonathan Leffler    16 年前

    创建以二进制形式分布的C++库的困难在于,您的客户-库的用户通常被约束为在创建库时使用相同的C++编译器。这可能是有问题的,如果你想跟上时代,他们不,或者如果他们想跟上时代,你不。如果你处理源代码,这是一个问题,只要你的C++是足够便携的,允许它被你的客户使用的所有编译器使用。

    如果代码可以从C使用,我可能会将代码编码到C接口。可选的,提供两个接口——本地C++接口和C接口。但这不仅仅是一个C接口。另一方面,可能有来自C++接口的好处(可能使用STL迭代器等),这可能会动摇您的决定。

        3
  •  1
  •   Dana the Sane    16 年前

    我也会说C是最小公分母。如果可以更好地与调用应用程序集成,那么您总是可以选择将C++包装写入核心库。

        4
  •  0
  •   Nosredna    16 年前

    我认为C是最可预测的可移植的,但是C++是可行的。

        5
  •  0
  •   ojblass    16 年前

    考虑最小公分母的因素,让您的库的消费者做出最适合他们的决定。extern C的构造可能仍然让一些人困惑,您希望您的图书馆能够走得更远,接触到最广泛的读者。如果你避免了一些较暗的角落(比如STL),那么绝对允许界面纯C++。C是最轻便的酒吧。为所有可用的平台创建库并不是一个小壮举,所以一定要看看 here 为了一些提示。您可能还需要考虑使用autoconf等。