即是否可以将Haskell代码嵌入到C库中,以便库的用户不必知道正在使用Haskell?特别是,这样用户可以使用多个嵌入Haskell的库,而不会有任何冲突?
据我所知,你在hs_init和hs_exit的调用之间嵌入,但这些涉及全局状态恶作剧,应该与其他调用冲突,不是吗?
目标:
例:
#include "Base.h"
#include "Derived.h"
{
static Base sb; // OK
Base ab, *hb = new Base; // OK
static Derived sd; // OK
Derived ad; // OK
Derived *pd = &ad; // OK
Derived *hd = new Derived; // Compile error, link error,
// test-unit exception, or lint gripe
struct Composite {
Base cb;
Derived cd;
} *hc = new Composite; // OK
// Edit to show side-effects of solutions which hide Base::operator new. …Run Code Online (Sandbox Code Playgroud) 我最近读了很多关于"防止一个类的堆分配"(参见这个问题).
我能够理解"如何",但现在我无法弄清楚"为什么"有人愿意这样做.
我想这一定有合理的理由,但我无法弄明白.
简而言之:"为什么我要禁止用户在堆中创建我的类的对象?"