如何告诉 Automake 构建一个不需要安装的动态模块?
pkglib_LTLIBRARIES = mywrapper.la
mywrapper_la_LDFLAGS = -no-undefined -module -avoid-version
Run Code Online (Sandbox Code Playgroud)
导致 mywrapper.so 安装到pkglibdir.
noinst_LTLIBRARIES = mywrapper.la
mywrapper_la_LDFLAGS = -no-undefined -module -avoid-version
Run Code Online (Sandbox Code Playgroud)
导致改为构建静态便利库。
有问题的动态模块仅用于运行测试套件,因此不能分发。
我正在寻找消除算法中的特殊情况,为了做到这一点,我想确定它std::string::npos + 1是0.
在我测试的所有实现中都是如此,并且在标准中搜索我发现了以下内容:
namespace std {
template<class charT, class traits = char_traits<charT>,
class Allocator = allocator<charT> >
class basic_string {
// ...
typedef typename allocator_traits<Allocator>::size_type size_type;
// ...
static const size_type npos = -1;
...
};
}
Run Code Online (Sandbox Code Playgroud)
allocator_traits<Allocator>::size_type 被定义为无符号整数类型.
所以,我想,我的问题归结为是否(static_cast<T>(-1)) + 1总是给出0无符号整数类型T?
我需要在Erlang中的单个侦听套接字上处理两个不兼容的协议版本.
遗憾的是,协议升级设计不正确,因此在较旧的协议中切换到较新的协议或版本控制中的"升级协议"选项,新协议是普通的TLS连接(较旧的是普通的TCP请求 - 响应行导向的) ).
现有的C实现用于recvmsg(MSG_PEEK)从连接开始嗅探几个字节,然后将套接字传递给其中一个处理程序.Erlang没有公开功能以"偷看"到套接字而不从中读取.
如何在Erlang中有效地做到这一点?
我想出了一些想法,但没有一个看起来令人满意:
MSG_PEEK于NIF.缺点:recvmsg可能会阻塞,这会对调度程序造成严重破坏.cb_infoSSL套接字选项).缺点:使用纯Erlang来回代理数据会使实现变得复杂并减慢速度.