小编Nou*_*jik的帖子

命名空间信息损害了 C++ 的可读性

我是新手C++并且有C. 对我来说很难采用的一件事是频繁使用作用域运算符,例如std::,我会通过将其放在using namespace std源代码的开头来避免使用它,但很多人不使用这种方法,因为他们认为这将来可能会咬他们。

另外,visual-studio还沿着范围运算符显示错误/警告消息,例如

cannot convert from 'std::vector<int,std::allocator<_Ty>> *' to 'std::shared_ptr<std::vector<int,std::allocator<_Ty>>>'
Run Code Online (Sandbox Code Playgroud)

虽然上面的消息很冗长,但是读起来很痛苦(?)。我认为如果采用这种形式,阅读起来会很简单

cannot convert from 'vector<int,allocator<_Ty>> *' to 'shared_ptr<vector<int,allocator<_Ty>>>'
Run Code Online (Sandbox Code Playgroud)

1) 为什么每个人都使用std::, cout, cinendl为什么有人会把这些标签用于其他目的呢?

2)他们在 Visual Studio 中的解决方法是不向我显示带有前缀的错误/消息/语法突出显示吗std::

c++ readability namespaces visual-studio name-lookup

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

如何将标志传递给CMAKE中的nvcc编译器

我有一个C项目,Cmake其中嵌入了cuda 内核模块

我想通过--ptxas-options=-vnvcc在-为了查看 每线程寄存器的使用数量每块共享内存使用

通过搜索如何将标志传递给nvccin Cmake,我遇到了一个解决方案

add_compile_options(myprog
    PRIVATE
    $<$<COMPILE_LANGUAGE:C>:-Wall>
    $<$<COMPILE_LANGUAGE:CUDA>:-arch=sm_20 -ptxas-options=-v>
)
Run Code Online (Sandbox Code Playgroud)

但这并没有显示上述属性。我认为这些标志没有nvcc正确传递。

如何传递--ptxas-options=-vnvcc编译器?

cuda cmake nvcc

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

如何释放主线程函数分配的内存

我已经heap在线程函数中分配了内存f1,该存储用于计算堆区域中的值,以便主函数可以看到它。

这是线程函数定义:

void *f1(void *input){


        int sum = (int*)malloc(sizeof(int));
        /* Do calculation */   
        pthread_exit((void*)&sum);
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,sum是为堆分配的存储,其地址作为返回值传递到sum1中的main()

join的线程main()是这样的:

void *sum1;
pthread_join(tid1,(void**)&sum1);
Run Code Online (Sandbox Code Playgroud)

一旦检索到该值,便要free分配的内存。当我free主要使用它时,它会抱怨munmap_chunk(): invalid pointer

free该如何明确和安全地存储此内存?

c free memory-management pthreads

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

在 shell 中将换行符作为参数传递

该程序将单个字符作为参数。

./myprog <character>
Run Code Online (Sandbox Code Playgroud)

我如何将 shell 中的\n传递给 myprog ?

bash newline

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