小编cro*_*mmy的帖子

Pip 选择了错误的路径

我使用的是 Windows 10,我摆脱了 python 3.8,并安装了 3.7 作为系统上唯一的 python 版本。

当尝试使用 pip 安装库时,我现在收到错误:

Fatal error in launcher: Unable to create process using '"c:\users\user\appdata\local\programs\python\python38-32\python.exe"  "C:\Users\User\AppData\Local\Programs\Python\Python38-32\Scripts\pip.exe" install pygame_menu': The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)

当我检查控制台时,which -a pip我得到:

C:\Users\User>which -a pip
/cygdrive/c/Users/User/AppData/Local/Programs/Python/Python38-32/Scripts/pip
/cygdrive/c/Users/User/AppData/Local/Programs/Python/Python37/Scripts/pip
Run Code Online (Sandbox Code Playgroud)

现在,当我在变量路径中查找 Python 时,没关系...无论如何,我不知道如何更改 pip 的路径,因此选择了正确的路径...除了我卸载了 python 和 pip 多个之外,这很奇怪好几次了,每次安装的时候还是出错。

谢谢

python windows pip

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

重载成员函数的函数特征

我有以下函数特征代码:

    template<typename T>
struct function_traits;

template<class F>
struct function_traits;

// function pointer
template<class R, class... Args>
struct function_traits<R(*)(Args...)> : public function_traits<R(Args...)>
{};

template<class R, class... Args>
struct function_traits<R(Args...)>
{
    using return_type = R;

    static constexpr std::size_t arity = sizeof...(Args);

    template <std::size_t N>
    struct argument
    {
        static_assert(N < arity, "error: invalid parameter index.");
        using type = typename std::tuple_element<N,std::tuple<Args...>>::type;
    };
};

// member function pointer
template<class C, class R, class... Args>
struct function_traits<R(C::*)(Args...)> : public function_traits<R(C&,Args...)>
{};

// const member function pointer …
Run Code Online (Sandbox Code Playgroud)

c++ traits

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

TRAP 和异常的区别

参加操作系统课程。所以我知道陷阱和异常都可以被视为软件中断......所以它们都是内部的和同步的。但是我似乎无法弄清楚这两个定义之间的区别。因此,如果有人不介意解释并提供一些示例,我们将不胜感激。

谢谢。

operating-system exception os-trap

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

使用局部变量移动语义

我想知道从此示例中获取的以下代码:

是否可以 std::move 局部堆栈变量?

struct MyStruct
{
    int iInteger;
    string strString;
};
    
void MyFunc(vector<MyStruct>& vecStructs)
{
    MyStruct NewStruct = { 8, "Hello" };
    vecStructs.push_back(std::move(NewStruct));
}
    
int main()
{
    vector<MyStruct> vecStructs;
    MyFunc(vecStructs);
}
Run Code Online (Sandbox Code Playgroud)

我了解std::move()基本的工作原理,但在幕后有一些东西对我来说没有意义。

例如,如果NewStruct是在本地堆栈上创建的,如示例中所示。如果我在退出函数作用域之前使用移动语义来保存其数据免遭破坏,那么NewStruct被破坏就不会影响我的数据,这很好。但是这个信息不是还是放在栈里的吗?NewStruct如果我要再次扩展堆栈的使用,那么一旦堆栈增长并想要覆盖最初创建数据的位置,为什么这些信息不会面临被覆盖的危险呢?

添加第二个例子也许可以更好地表达我的观点:

    void MyFunc(vector<char*> &vecCharPointers)
    {
        char* myStr = {'H', 'e', 'l', 'l', 'o'};
        vecCharPointers.push_back(std::move(myStr));
    }

    int main()
    {
        vector<char*> vecCharPointers;
        char* cp = nullptr;
    }
Run Code Online (Sandbox Code Playgroud)

c++ stack move

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

标签 统计

c++ ×2

exception ×1

move ×1

operating-system ×1

os-trap ×1

pip ×1

python ×1

stack ×1

traits ×1

windows ×1