小编Pat*_*ykB的帖子

.env vs config.json

我刚刚开始学习JavaScript/ node.js(对后端webdev的温和介绍),因此我在这个主题中完全是绿色的.

几天前,我正在阅读一个教程,从中我学会了将机密数据(如密码)保存在config.json文件中.

今天我发现(偶然).env文件,我越了解它,似乎越多人使用它来实际存储密码.

所以.envconfig.json什么时候应该使用,什么时候应该使用?

javascript node.js

14
推荐指数
6
解决办法
5660
查看次数

当前形式的`std :: exception`是多余的吗?

通常,当我想创建自己的异常时,我继承自std::exceptionstd::runtime_error.

是否有什么阻止我创建自己的空"标签类"?

class out_of_bounds_access {}; // or:
class memory_leak {};
Run Code Online (Sandbox Code Playgroud)

并抛出那个?
毕竟,大多数情况下,它是带有关于错误的信息的类名,而不是异常类的成员.

好的,所以我认为这是一个坏主意,但为什么呢?为什么这是一个坏主意?

PS我知道有些情况下"定制"异常带有后者用于确定解决问题的正确方法的信息......
但是,如果你考虑一下,这样的情况可能很常见(并非总是如此) ,但经常),重新完成抛出和捕获多个不同的标记类而不是只有一个(带有"内容").

c++ exception

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

C ++和Python之间的数据传输

我想在C ++和Python之间共享内存。

我的问题:

  1. 我正在使用C ++处理大数据集(最大6 GB的RAM)。所有计算均在c ++中完成。
  2. 然后,我想将所有结果“粘贴”到Python程序中。但是我只能将数据写入磁盘,然后从Python读取该文件,效率不高。

有什么办法可以“映射”与C ++变量相对应的内存,以便我可以从Python访问数据?我不想将6GB的数据复制到硬盘上。

c++ python data-transfer

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

cudaMemPrefetchAsync() 返回 cudaErrorInvalidDevice - 为什么?

每当我调用它时cudaMemPrefetchAsync(),它都会返回错误代码cudaErrorInvalidDevice。我确信我传递了正确的设备 ID(我的笔记本电脑中只有一个支持 CUDA 的 GPU id == 0)。

我相信下面发布的代码示例是没有错误的,但是在行52(调用cudaMemPrefetchAsync())中我不断收到此错误。


我试过:

  1. 干净的驱动程序安装。(最新版本)
  2. 我检查谷歌寻找答案,但找不到任何答案。(我只找到了这个

(其他的我没啥想法了)


系统规格:

操作系统: Microsoft Windows 8.1 x64 家庭版。
IDE: Visual studio 2015
CUDA 工具包: 8.0.61
NVIDIA GPU: GeForce GTX 960M
NVIDIA GPU 驱动程序:版本 381.65(最新)
计算能力: 5.0 (Maxwell)
统一内存支持:支持。
英特尔集成GPU:英特尔高清显卡4600


代码示例:

/////////////////////////////////////////////////////////////////////////////////////////////////////////
// TEST AREA:
// -- INCLUDE: 
/////////////////////////////////////////////////////////////////////////////////////////////////////////

// Cuda Libs: ( Device Side ):
#include <cuda_runtime.h>
#include <device_launch_parameters.h>

// Std C++ Libs:
#include …
Run Code Online (Sandbox Code Playgroud)

debugging cuda

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

有没有办法从`std :: initializer_list`创建用户定义的文字?

就像在主题中一样:有没有办法从中创建用户定义的文字std::initializer_list

我想做那样的事情:

template <typename T> inline
std::initializer_list<T> const & operator "" _lit(std::initializer_list<T> const & list)
{
    return std::move(list); // I am not sure, but this line might cause undefined behavior... well I'll think about it latter...
}

int main()
{
    { 10, 20, 30, 40 }_lit // Error: identifier '_lit' is undefined;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但似乎编译器不明白我试图打电话operator""_lit({10, 20, 30, 40});有没有办法解决它?


编辑:
对不起,原来这只是XY问题的另一个例子......
让我详细说明

我试图"扩展"当前的C++语法(这是一个有趣的小项目...)

主要想法是简化这个:

if ((val_1 == value) && (val_2 == value) && (val_3 == value)) …
Run Code Online (Sandbox Code Playgroud)

c++ literals initializer-list

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

如何判断一个对象是否有堆分配成员?

有没有一种方法可以确定一个对象在堆上是否至少有一个成员?

我试图能够将像std::stringor std::vectoror这样的对象std::list(是的,主要是容器)与所有其他类型区分开来(不幸的是,即使是具有单个元素的容器也在我的“感兴趣范围”内)

我正在尝试做类似以下的事情:

struct foo
{
private:
    int * _ptr;

public:
    foo() : _ptr(new int) {};
    ~foo() { delete _ptr; };
};

struct bar
{
private:
    int val;
};

template <typename T>
void func(T val)
{
    if constexpr (std::is_class_v<T>)
    {
        std::cout << std::setw(20) << typeid(T).name() << " is a class type." << std::endl;
        if (/* determine if foo has any heap allocations */)
        {
            // Do something #1.
            std::cout << std::setw(20) << typeid(T).name() << …
Run Code Online (Sandbox Code Playgroud)

c++ templates class member c++17

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

CUDA设备端代码中的C/C++"inline"关键字

当谈到CUDA时,我完全是"新手".所以,如果我的问题是微不足道的,请原谅我.

nvcc是否理解inlineC关键字的含义?
我知道__forceinline__,和类似的nvcc"宏",因此我不是在问如何编写inlinecuda设备端代码.
我也知道,我的代码在nvcc和c/c ++编译器之间"分开"(我正在使用Visual Studio IDE).
这是否意味着inline当nvcc"紧挨着" __device____global__内核时,nvcc会忽略该关键字?

编辑:
PS我曾搜索过cuda编程指南.我在inline条目下找不到任何有用的东西,类似的"标签"也无济于事.

c++ cuda inline keyword

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

extern 内联函数被引用但未定义

void foo(void) {}我有一个我希望内联的函数(让我们称之为它)。但是我在 .cpp 文件中定义了它。
我无法将该函数移动到标头,因为它正在使用 .cpp 中的其他函数。



编辑:
下面的代码就像真实的代码一样不使用 C++ 功能。我可以明确补充:

#ifdef __cplusplus
extern "C"
#endif
Run Code Online (Sandbox Code Playgroud)

如果我想将下面的代码转换为 c99,我只需要更改我的项目属性(或 makefile,如果您愿意)而不是代码。我也在询问c++,因为它可以解决我的问题,而c99不能。
因此我的问题中的 C 和 C++ 标签是合理的。代码是可移植的,
请参阅:When to use extern "C" in C++?



编辑#2
好吧,我明白我必须将foo()定义放在头文件中。如何在不将它们移动到头文件的情况下调用func_a()func_b()from ?foo()有什么解决方法吗?



示例
文件.c/.cpp:

int    func_a (int a,    int b,    int c)    {/*...*/};
double func_b (double a, double b, double c) {/*...*/};

void   foo    (int a, double b) { // unction definition
    //...
    int myInt …
Run Code Online (Sandbox Code Playgroud)

c c++ inline extern

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

一个可以指向任何地方的指针,如何确定是否可以安全地调用"删除"?

有没有办法在运行时区分以下两种情况:

double ptr * = new double(3.14159);
double variable = 3.14159

double * testPtr_1 = ptr;
double * testPtr_2 = &variable;

delete testPtr_1  // fine... 
delete testPtr_2  // BIG RUN TIME ERROR !!!
Run Code Online (Sandbox Code Playgroud)

我发现自己陷入困境,我需要调用delete操作符来获取一些未知指针.指针可以指向任何位置(指向"本地"变量或动态分配的变量).

我怎样才能找到我的"未知"指针指向的位置,因此选择何时何时不要调用operator delete




编辑: 好的我看到每个人都指着智能指针,但如果我想写自己的指针怎么办?一套智能指针(这是我的问题背后的原因)?

c++

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

编译器可以内联静态模板函子吗?

我已阅读以下问题:

  1. 模板函子与函数
  2. C++ 函子 - 及其用途
  3. C++ 函数模板偏特化?

我明白什么C++ functors是好的。但是我无法推断如果执行以下操作会发生什么:

template <typename T, unsigned int state>
class Foo {
public:
    static Foo_func() { /* Do something */ };
}

// Partial specialization:
// -- state == 1
template <typename T>
class Foo <T, 1> {
public:
    static Foo_func() { /* Do something */ };
}

template <typename F>
void call_func(F func) {

    // Do something... //

    func();

    // Do something... //
}

int main() {
    Foo <double, /*state*/ …
Run Code Online (Sandbox Code Playgroud)

c++ functor

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

如何从一组派生类创建列表?

假设我有一组以下课程:

class animal
{
// members, constructors and other methods...

public:
    virtual void what_do_you_eat() { cout << "i eat generic food" << endl; }
}

class cat : public animal
{
// members, constructors and other methods...

public:
    void what_do_you_eat() { cout << "i eat cat food" << endl; }
}

class dog : public animal
{
// members, constructors and other methods...

public:
    void what_do_you_eat() { cout << "i eat dog food" << endl; }
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个列表(任何容器都可以,但让我们std::list<>为这个例子选择): …

c++ inheritance std

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

为什么 `SFINAE` (std::enable_if) 使用 bool 文字而不是 `true_t` / `false_t` 标记类?

我正在尝试了解SFINAE(我正在关注本教程),但有一些......“设计选择”我不理解,因此,我发现它们令人困惑。

假设我遇到这样的情况(包括重新实现std::enable_ifis there 只是为了演示我是如何理解的enable_if

// A default class (class type) declaration. Nothing unusual.
template <bool, typename T = void>
struct enable_if
{}; 

// A specialisation for <true, T> case. I understand 'why-s' of this. 
// -- 'why-s': if I attempt to access 'enable_if<false, T>::type' (which does not exist) I will get a substitution failure and compiler will just "move-on" trying to match "other cases".
template <typename T>
struct enable_if<true, T> {
    typedef …
Run Code Online (Sandbox Code Playgroud)

c++ sfinae

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

是否可以获得未知类的类成员的数量和类型?

我有一个黑匣子类,如:

class foo
{/* body is unavailable for me to inspect */};
Run Code Online (Sandbox Code Playgroud)

foo 可以是模板。

此类是终极黑匣子;
-我对它的成员一无所知
-我对它的方法一无所知
-等等。

我正在尝试实现一个class_traits类:

template <typename T>
class class_traits
{
// impl
}
Run Code Online (Sandbox Code Playgroud)

这将允许我执行以下操作(或至少执行类似操作)

int main()
{
    cout << class_traits<foo>::member_count << endl;
    cout << typeid(class_traits<foo>::member<0>::type).name() << endl;
    cout << typeid(class_traits<foo>::member<1>::type).name() << endl;
    cout << typeid(class_traits<foo>::member<2>::type).name() << endl;
    return 0;
};
Run Code Online (Sandbox Code Playgroud)

可以那样做吗?如果是这样,怎么办?
我仅限于c++17
我完全可以使用宏和其他“ hacky”解决方案(如果可能的话,我希望将其保留在编译时而不是运行时)。

c++ macros templates c++17

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