小编moa*_*lon的帖子

<system_error>类别和标准/系统错误代码

C++ 11引入了<system_error>包含通用系统的头文件来处理错误代码.An std::error_code是一个元组,包含一个int错误代码和一个对a的引用std::error_category,它定义了错误域和错误代码的处理.标准库带有四个类别:std::generic_category,std::system_category,std::future_category,和std::iostream_category.

有冲突,在其上使用的类别,都在这里SO和C++的参考点,创建时std::error_codeS /投掷std::system_error以s errno和WinAPI的错误代码:

但是,errno并且GetLastError()不能使用相同的类别,否则一些错误代码将是不明确的.错误代码33是一个例子,因为它是EDOMERROR_LOCK_VIOLATION.

甚至有些地方主张WinAPI的用户制作类别,但我目前找不到任何引用.这种替代方案会特别痛苦.

哪些类别应与使用errno,并应搭配使用GetLastError(),使

  • std::error_code::default_error_condition()
  • std::error_code::message()

是否简单且适用于底层错误代码?

c++ winapi posix c++11 system-error

26
推荐指数
2
解决办法
4760
查看次数

在容器之后创建借用值时,如何添加对容器的引用?

由于与代码组织相关的原因,我需要编译器接受以下(简化)代码:

fn f() {
    let mut vec = Vec::new();
    let a = 0;
    vec.push(&a);
    let b = 0;
    vec.push(&b);
    // Use `vec`
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨

error: `a` does not live long enough
 --> src/main.rs:8:1
  |
4 |     vec.push(&a);
  |               - borrow occurs here
...
8 | }
  | ^ `a` dropped here while still borrowed
  |
  = note: values in a scope are dropped in the opposite order they are created

error: `b` does not live long enough
 --> src/main.rs:8:1
  | …
Run Code Online (Sandbox Code Playgroud)

rust borrow-checker

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

将git-svn与缺少.git/svn /的现有repo一起使用

我使用Git克隆了项目的源代码,Git在服务器上从SVN repo转换.这个Git存储库的问题是它缺少标签,分支,并且缺少一些修订.对于我来说,使用git-svn克隆的修订数量是巨大的(~20000),这会浪费带宽和时间,因为我已经拥有了本地仓库中的大多数对象.因此,我想知道:

  • 如何将我的Git存储库转换为git-svn repo,直接从SVN repo而不是破坏的Git repo进行更新.
  • 我可以在不必克隆所有内容的情况下获取缺少的修订吗?
  • 可以直接用Git下载标签吗?
  • 这些分支会是一个额外的问题吗?

svn git git-svn

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

为可用的图像创建浏览器池

我有一个小的http服务器,可以即时生成一些图像,生成过程可能需要一些时间.生成后,图像将被无限缓存.

目前,如果用户请求未缓存的图像,则服务器返回202 Accepted带有Refresh标题的图像.如果图像被缓存,301 Permanently Moved则发送a并且用户被重定向到唯一URL(不同的图像可以共享相同的唯一URL).

如果图像在<img>标签中引用(至少在Firefox上),整个系统就会中断.没有Javascript可以解决这个问题吗?如果没有,脚本会是什么样子?

html javascript http image-generation http-headers

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

使用STL的列表对象

我想用C++创建一个队列列表,但编译器给了我一些神秘的消息:

#include <list>
#include <queue>

class Test
{
    [...]
    list<queue> list_queue;
    [...]
}
Run Code Online (Sandbox Code Playgroud)

输出:

error C2143: syntax error : missing ';' before '<'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2238: unexpected token(s) preceding ';'
Run Code Online (Sandbox Code Playgroud)

即使我使用int作为模板参数,它也会给出相同的错误.这是怎么回事?

(顺便说一下,我正在使用VC++ 2008 EE)

c++ stl

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

指向特征的指针

当我开始学习 Rust 时,我天真地假设 Rust 指向特征的指针就像 C++ 指向基类的指针一样实现,并编写了一些即使在这种假设下也能工作的代码。具体来说,我编写的代码与需要读取和查找流的 FFI 库接口,如下所示:

struct StreamParts {
    reader: *mut Read,
    seeker: *mut Seek,
}

fn new_ffi_object<T: Read + Seek + 'static>(stream: T) -> FFIObject {
    let stream_ptr   = Box::into_raw(Box::new(stream));
    let stream_parts = Box::into_raw(Box::new(StreamParts {
        reader: stream_ptr as *mut Read,
        seeker: stream_ptr as *mut Seek,
    }));

    ffi_library::new_object(stream_parts, ffi_read, ffi_seek, ffi_close)
}

extern "C" fn ffi_read(stream_parts: *mut StreamParts, ...) -> c_ulong {
    (*stream_parts.reader).read(...)
    ...
}

extern "C" fn ffi_seek(stream_parts: *mut StreamParts, ...) -> c_ulong {
    (*stream_parts.seeker).seek(...)
    ... …
Run Code Online (Sandbox Code Playgroud)

pointers ffi traits rust

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

使用在C++中作为模板传递的类型

是否可以实际使用作为控制流模板传递的类型?我想编写一个使用模板的函数,模板又根据传递的类型调用另一个函数:

template <class T> void test_function (T var)
{
    //Do stuff
    if (T == char) {
        bar (var);
    } else {
        foo (var);
    }
    //Do even more stuff
}
Run Code Online (Sandbox Code Playgroud)

如果没有,我将不得不回到枚举......

编辑:到目前为止,所有答案都建议我使用模板专业化.我不是很具体,但这与完全不使用模板是一样的,因为对于每种不同的类型,都有一个不同的函数调用.

c++ templates

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