小编dot*_*mag的帖子

Automake:构建不安装的共享模块

如何告诉 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)

导致改为构建静态便利库。

有问题的动态模块仅用于运行测试套件,因此不能分发。

automake libtool

5
推荐指数
1
解决办法
678
查看次数

是否由C++标准保证std :: basic_string :: npos + 1 == 0?

我正在寻找消除算法中的特殊情况,为了做到这一点,我想确定它std::string::npos + 10.

在我测试的所有实现中都是如此,并且在标准中搜索我发现了以下内容:

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?

c++

4
推荐指数
1
解决办法
268
查看次数

Erlang:识别协议而不消耗套接字中的数据

我需要在Erlang中的单个侦听套接字上处理两个不兼容的协议版本.

遗憾的是,协议升级设计不正确,因此在较旧的协议中切换到较新的协议或版本控制中的"升级协议"选项,新协议是普通的TLS连接(较旧的是普通的TCP请求 - 响应行导向的) ).

现有的C实现用于recvmsg(MSG_PEEK)从连接开始嗅探几个字节,然后将套接字传递给其中一个处理程序.Erlang没有公开功能以"偷看"到套接字而不从中读取.

如何在Erlang中有效地做到这一点?

我想出了一些想法,但没有一个看起来令人满意:

  • 一个小型的C前端服务器,它嗅探协议并调度到Erlang中的一个端点.缺点:使部署复杂化.
  • 暴露MSG_PEEK于NIF.缺点:recvmsg可能会阻塞,这会对调度程序造成严重破坏.
  • 从套接字读取,然后在自定义套接字模块中重放完整数据(使用cb_infoSSL套接字选项).缺点:使用纯Erlang来回代理数据会使实现变得复杂并减慢速度.

erlang

1
推荐指数
1
解决办法
147
查看次数

标签 统计

automake ×1

c++ ×1

erlang ×1

libtool ×1