小编vin*_*ker的帖子

如何将一个Rust`Vec <T>`暴露给FFI?

我正在尝试构造一对元素:

  • array: *mut T
  • array_len: usize

array 旨在拥有数据

但是,Box::into_raw会回来*mut [T].我找不到有关将原始指针转换为切片的任何信息.它在内存中的布局是什么?我如何在C中使用它?我应该转换成*mut T?如果是这样,怎么样?

ffi rust

15
推荐指数
2
解决办法
4711
查看次数

如何防止NodeJS事件循环退出?

我已经实现了一个需要回调的本机函数.NodeJS知道接口,但它对它的实现一无所知.此本机函数接收回调,并在结果准备好时调用它.我不希望在没有调用回调的情况下退出事件循环.

这是一个这样的问题的例子.

目前我需要做一些I/O(即使它是一个愚蠢的超时)来强制NodeJS等待我的功能.

Boost.Asio中,我只是实例化一个work对象并在调用回调时将其销毁.当这个对象被保留时,Boost.Asio的事件循环不会退出.NodeJS有类似的方法吗?我在NodeJS中使用什么(如果你的答案没有提及计时器,奖金)?

node.js

11
推荐指数
2
解决办法
3400
查看次数

如何处理 ExpressJS 中的 HTTP 升级?

最新的 ExpressJS 不再从 http.Server 继承。

如果我尝试侦听该upgrade事件,服务器将回答404 Not Found.

当前的[简化]代码是:

app.on('upgrade', function(req, socket, head) { /* ... */ });
Run Code Online (Sandbox Code Playgroud)

如果我尝试在 Google 上搜索答案,我只会找到与“3.0 -> 4.0 快速升级”相关的链接,而不是HTTP 升级

编辑:

根据@jfriend00 的要求,我的快速初始化[简化] 代码:

app = express.createServer();
app.listen(self.port, self.ipaddress);
Run Code Online (Sandbox Code Playgroud)

node.js express

9
推荐指数
2
解决办法
6268
查看次数

终端/ zsh/terminfo中的应用程序模式是什么?

几个 地方,我看到一些命令,以确保终端(?)处于应用程序模式,然后terminfo数据库设置/查询键绑定将起作用.

我试图找到这种应用模式是什么,但我没有成功.这个应用模式是什么?我认为没有它,Zsh可以正常运行.我对吗?在处理密钥绑定后,是否需要取消设置?一些应用程序(如基于curses的应用程序)不会解决它吗?

这只是一个问题:"什么是应用程序模式或它是如何工作的".我写了其他问题只是为了帮助你理解我的问题.

terminal zsh terminfo

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

整数和const char [N]上的模板没有编译(无法推断模板参数'N')

为什么编译器无法在以下代码中推断出模板参数?我该如何修复代码?我希望添加尽可能低的运行时开销.

#include <iostream>

using namespace std;

struct Test
{
    template<int N>
    Test(const char data[N]) :
        data(data),
        size(N)
    {}

    const char *data;
    int size;
};

int main()
{
    Test test("Foobar");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我试图让代码片段尽可能小且易读.

pos-reply UPDATE:

来自Tales of C++ K-ballo的解释可能很有用:

Lvalue转换,在lvalue参数用于预期rvalue的上下文中时应用.这些转换是左值到左值的转换,数组到指针的转换,以及函数到指针的转换.这是在按值传递时应用于所有函数参数的类型转换,通常称为参数衰减.

c++ templates

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

是std :: vector :: begin() - 1未定义?

我需要以向后的顺序迭代一些元素,我正在使用:

for ( /* ... */ it = vec.end() - 1, end = vec.begin() ; it >= end ; --it ) {
    // ...
Run Code Online (Sandbox Code Playgroud)

我现在end() - 1已经定义了一些容器,包括vector,但现在我需要知道是否还定义了开始递减.

编辑

我不知道是否可以使用reverse_iterator,因为我需要将这些迭代器作为参数传递给std :: vector :: erase,并且从文档中看,它们看起来是不同的类型.

c++ portability iterator stl

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

标签 统计

c++ ×2

node.js ×2

express ×1

ffi ×1

iterator ×1

portability ×1

rust ×1

stl ×1

templates ×1

terminal ×1

terminfo ×1

zsh ×1