小编V_V*_*V_V的帖子

setlocale卡在Windows上

setlocale(LC_ALL, "uk-UA")我有时因为不明原因而挂起/死锁.调用堆栈是:

ntdll.dll!_ZwWaitForSingleObject@12()   Unknown
ntdll.dll!_RtlpWaitOnCriticalSection@8()    Unknown
ntdll.dll!_RtlEnterCriticalSection@4()  Unknown
ntdll.dll!_LdrpLoadDll@28() Unknown
ntdll.dll!_LdrLoadDll@16()  Unknown
KernelBase.dll!_LoadLibraryExW@12() Unknown
ucrtbased.dll!__crt_findfile_traits::get_invalid_value(void)    Unknown
ucrtbased.dll!__acrt_lock_and_call<class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> >(enum __acrt_lock_id,class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> &&)    Unknown
ucrtbased.dll!__acrt_lock_and_call<class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> >(enum __acrt_lock_id,class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> &&)    Unknown
ucrtbased.dll!__acrt_lock_and_call<class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> >(enum __acrt_lock_id,class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> &&)    Unknown
ucrtbased.dll!__acrt_lock_and_call<class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> >(enum __acrt_lock_id,class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> &&)    Unknown
ucrtbased.dll!__acrt_lock_and_call<class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> >(enum __acrt_lock_id,class <lambda_a463b7b0560cfcaf9b17f27c6ef46564> &&)    Unknown
ucrtbased.dll!___acrt_can_use_vista_locale_apis()   Unknown
ucrtbased.dll!__expandlocale()  Unknown
ucrtbased.dll!__wsetlocale()    Unknown
ucrtbased.dll!__crt_call_and_cleanup<class <lambda_565169b3e3b494427ce1bebdd17b54ac>,class <lambda_f51fe5fd7c79a33db34fc9310f277369> >(class <lambda_565169b3e3b494427ce1bebdd17b54ac> &&,class <lambda_f51fe5fd7c79a33db34fc9310f277369> &&)   Unknown
ucrtbased.dll!__crt_seh_guarded_call<void>::operator()<class <lambda_0f92d0c5a8007722f95b3b6c71cd8e3e>,class <lambda_321f9d61c14d59ff00145e45db1313e0> &,class <lambda_3298c911d7b53f44106027a7fde9a80a> >(class <lambda_0f92d0c5a8007722f95b3b6c71cd8e3e> &&,class <lambda_321f9d61c14d59ff00145e45db1313e0> &,class <lambda_3298c911d7b53f44106027a7fde9a80a> &&) Unknown …
Run Code Online (Sandbox Code Playgroud)

c windows winapi visual-studio

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

如何等待静态变量的动态初始化完成

根据其他来源的资料,C++区分了两种静态变量的初始化:

  • static - 如果变量是通过将其置于可执行文件中的特殊部分的初始值中来初始化的。

  • 动态 - 如果静态变量的初始值也已计算

关于动态初始化构造函数调用的顺序有很多讨论。但是我没有找到有关如何等到可执行文件中所有静态变量的所有动态初始化完成的信息。或者从另一方面如何以间接/通用方式手动调用此初始化。

我使用静态变量初始化来实现插件架构的松散耦合。我有 plugin1.c, plugin2.c ... 和plugin1.c static bool installed = plugin1_install();里面的静态变量

但在主要我需要等到所有插件安装。

这里建议了我使用的相同内容1。作为以下问题的答案

我想为我的程序编写一个共享库。但是,在调用库中的任何其他函数之前,我需要库具有一些自初始化例程...

回答:

C++ 本身支持事物的全局初始化。您可以执行以下操作:

int global_variable=some_global_function();

这在 C 中是非法的,但在 C++ 中是合法的。

我可以在 的帮助下实现我需要的功能__CTOR_LIST__吗?

c++

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

如何仅为*.el文件启用Show-Paren模式

如何仅为*.el文件启用Show-Paren模式?

我试过了

(add-hook 'emacs-lisp-mode-hook '(lambda()
                                   (show-paren-mode 1)
                                   ))
Run Code Online (Sandbox Code Playgroud)

但它仍然可以为所有情况启用Show-Paren模式.即使在*scratch*缓冲区中,我也启用了Show-Paren模式.

emacs elisp

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

在任何类范围之外的Boost.Python中暴露常量

我在C++代码中遵循常量

enum
{
    BOUNDARY_NONE = -1,
};
Run Code Online (Sandbox Code Playgroud)

我想用Boost.Python将它暴露给Python,这样它就可以在Python中使用了BOUNDARY_NONE.我不想在任何附加范围内定义它.

我发现如何使用Boost.Python v1执行此操作

#include <boost/python/reference.hpp>
my_module_builder.add(make_ref(BOUNDARY_NONE), "BOUNDARY_NONE");
Run Code Online (Sandbox Code Playgroud)

但我使用较新版本的Python,我不知道如何使用它来访问my_module_builder(我改用BOOST_PYTHON_MODULE).

这里出现了类似的问题,但它们正在为类范围添加常量,并且我没有任何类范围可供使用.

python boost boost-python

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

将MongoDB与本机驱动程序和Express.js一起使用时,“拓扑被破坏”

我已经实现了一个简单的应用程序,该应用程序从MongoDB中获取数据

const express = require('express')
const app = express()
const port = 3000

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

const dbConnectionURL = 'mongodb://localhost:27017';
const dbName = 'todo';
const dbClient = new MongoClient(dbConnectionURL);

function findTodos(db, callback) {
    const collection = db.collection('todos');
    collection.find({}).toArray(function (err, todos) {
        assert.equal(err, null);
        console.log("Found the following records");
        console.log(todos)
        callback(todos);
    });
}

app.get('/', (req, res) => {
    dbClient.connect(function (err) {
        assert.equal(null, err);
        console.log("Connected successfully to server");

        const db = dbClient.db(dbName);

        findTodos(db, function(todosArr) {
            var todos = …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js express

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

标签 统计

boost ×1

boost-python ×1

c ×1

c++ ×1

elisp ×1

emacs ×1

express ×1

mongodb ×1

node.js ×1

python ×1

visual-studio ×1

winapi ×1

windows ×1