可以从C例程调用随机C++ 2011标准函数吗?

nop*_*eva 3 c c++ random c++11

我需要生成从范围内的随机整数,发现很有趣的东西,讨论在这里通过了答案@Walter.但是,它是C++11标准的,我需要使用C,有没有办法从C拨打电话?我在这里重现他的答案:

#include <random>

std::random_device rd;     // only used once to initialise (seed) engine
std::mt19937 rng(rd());    // random-number engine used (Mersenne-Twister in this case)
std::uniform_int_distribution<int> uni(min,max); // guaranteed unbiased

auto random_integer = uni(rng);
Run Code Online (Sandbox Code Playgroud)

vba*_*bar 5

您不能在C中使用C++类,但可以将C++功能包装在函数中,这些函数可以从C调用,例如在getrandom.cxx中:

#include <random>

static std::random_device rd;
static std::mt19937 rng(rd());
static std::uniform_int_distribution<int> uni(min,max);

extern "C" int get_random()
{
    return uni(rng);
}
Run Code Online (Sandbox Code Playgroud)

这是一个C++模块,它导出带有C链接的get_random函数(也就是说,可以从C调用.你在getrandom.h中声明它:

extern "C" int get_random();
Run Code Online (Sandbox Code Playgroud)

并可以从您的C代码中调用它.