小编Rec*_*ker的帖子

在g ++中是在后台使用pthreads的C++ 11线程模型?

我只是尝试着我的手g++ 4.6C++11功能.每次我使用-std=c++0xflag 编译一个简单的线程代码时,它都会因为分段错误而崩溃,或者只是抛出一些奇怪的异常.

我读了一些与C++11线程有关的问题,我意识到,我还需要使用-pthreadflag来正确编译代码.使用-pthread工作正常,我能够运行线程代码.

我的问题是,C++11多线程模型是否Pthreads在后台使用?还是从头开始写的?

我不知道是否有任何成员是gcc贡献者,但我只是好奇.

c++ g++ pthreads c++11

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

strcmp()和strcoll()有什么区别?

我尝试了解它们两个但我没有发现任何差异,除了strcoll() 这个参考说它

根据LC_COLLATE类别定义的当前语言环境比较两个空终止字符串.

在第二个想法,我知道我正在问另一个问题的详细答案,这个区域设置究竟是什么,对于C和C++?

c c++ string locale

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

控制SIMT和SIMD中的流量偏差

我正在读本书,深入研究CUDA的概念.其中一章介绍了SIMT的概念

SIMT中控制流分歧的选项还简化了程序员与SSE相比使用额外指令来处理控制流的要求.

我知道这个陈述是基于SSE在SIMD实现技术上工作而CUDA线程在SIMT原理上工作的事实,但是任何人都可以使用一些例子详细说明/解释这句话.提前致谢.

cuda sse simd

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

在使用CUDA和MATLAB时,是否可以从mex接口分配固定存储器?

我读了这篇pdf,我和mex一直在使用CUDA很长一段时间.我想知道像Fermi和Kepler这样的新一代GPU是否允许从MATLAB分配固定内存?

cuda mex

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

VS 2015中的std :: wcstok

我有这个使用过的用例代码,在使用VS 2015 C++编译器编译时产生警告.

#include <cwchar>
#include <iostream>

int main()
{
    wchar_t input[100] = L"A bird came down the walk";
    wchar_t* token = std::wcstok(input, L" ");
    while (token) {
        std::wcout << token << '\n';
        token = std::wcstok(nullptr, L" ");
    }
}
Run Code Online (Sandbox Code Playgroud)

这产生了以下警告.

warning C4996: 'wcstok': wcstok has been changed to conform with the ISO C standard, adding an extra context parameter. To use the legacy Microsoft wcstok, define _CRT_NON_CONFORMING_WCSTOK.
1>  c:\program files (x86)\windows kits\10\include\10.0.10240.0\ucrt\corecrt_wstring.h(254): note: see declaration of 'wcstok'

warning C4996: …
Run Code Online (Sandbox Code Playgroud)

c c++11 c11 visual-studio-2015

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

宏存储在哪里?

如果我在我的C代码中使用宏,例如

#define var 10
Run Code Online (Sandbox Code Playgroud)

然后存储在由内核分配给进程的空间中的确切位置?在堆或BSS或全局数据?或者它只是一个编译器传递中var的文本替换?

c macros c-preprocessor

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

cpanm 使用自定义库和 cflags

在我的 mac OS X 机器上Darwin maci 15.6.0 Darwin Kernel Version 15.6.0

我已在以下自定义目录中安装了 libxml2 和 libxslt

/usr/local/MyLibs/libxml2-2.9.2

和 libxslt

/usr/local/MyLibs/libxslt-1.1.29

现在我想使用这些库来构建我的 CPANM 模块XML::LibXSLT

告诉我我可以使用--configure-args(它仍然是实验性的)来做到这一点。所以我做了类似的事情,

cpanm http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-LibXSLT-1.94.tar.gz --configure-args="--cflags=-I/usr/local/libxslt-1.1.29/include -I/usr/include/libxml2 -I/usr/local/MyLibs/libxml2-2.9.2/include/libxml2 --libs=-L/usr/local/libxslt-1.1.29/lib -lxslt -lxml2 -lz -lpthread -licucore -lm -L/usr/local/MyLibs/libxml2-2.9.2/lib -lxml2 -lz -lpthread -liconv -lm" --force
Run Code Online (Sandbox Code Playgroud)

但是,构建日志表明它没有使用我的自定义位置中安装的库。

我是否有什么做得不正确的地方?

perl cpan xml-libxml cpanm

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

具有显式模板实例化的extern关键字

考虑我的问题的一个小的精简用例,其中我有一个标题如下

#include <iostream>
#pragma once
#ifndef HEADER_H
#define HEADER_H
template<typename T>
class FOO
{
public:
    void func() { std::cout << "Foo!"; };
};

extern template class __declspec(dllexport) FOO<int>;
using myfoo = FOO<int>;
#endif
Run Code Online (Sandbox Code Playgroud)

和一个源文件为

#include "Header.h"

int main()
{
    myfoo f;
    f.func();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我使用VS 2015(更新3)进行编译时,出现以下警告

warning C4910: 'FOO<int>': '__declspec(dllexport)' and 'extern' are incompatible on an explicit instantiation
Run Code Online (Sandbox Code Playgroud)

MSDN page does not explain to me clearly why is it wrong to have extern and dllexport in explicit template …

c++ c++11 visual-studio-2015

5
推荐指数
0
解决办法
856
查看次数

已删除的副本分配运算符的VS 2015 Update 3错误

以下代码在clang-3.8和gcc 4.9.3上编译得很好.

#include <vector>
#include <algorithm>
#include <iterator>

class foo 
{
};

class MyVec {
    public:
    MyVec() {}
};

class MyInsert :
    public std::iterator<std::output_iterator_tag, void, void, void, void>
{
  protected :
    MyVec &fV;

  public :
    explicit MyInsert (MyVec &v) : fV(v) {}

    MyInsert & operator= (void *value)
    {
        return *this;
    }

    MyInsert & operator* ()    { return *this; }
    MyInsert & operator++ ()   { return *this; }
    MyInsert & operator++(int) { return *this; }

};    

class test
{
    public:    
    void …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 visual-studio-2015

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

macOS:正确的编程方式来确定音量信息

目前,我们使用stafs来确定有关我们所处的文件系统卷的信息.

#include <string>  
#include <iostream>  
#include <sys/mount.h>  
#include <sys/param.h>  

void statFileSys(const std::string f)  
{  
    struct statfs fileStat;  
    if(statfs(f.data(),&fileStat) == 0)  
    {  
        std::cout << "File type: " << fileStat.f_type <<'\n';  
        std::cout << "File system name: "<<fileStat.f_fstypename << '\n';  
    }  
    else  
    {  
        std::cout << "statfs failed !!!"<<std::endl;  
    }  
}  

int main()  
{  
    statFileSys("/some/network/path");  
    statFileSys("/tmp");  

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

我们依靠

f_type  
Run Code Online (Sandbox Code Playgroud)

根据其HFS +或APFS或网络文件系统做出决策的价值.

但是,我们在三个不同的macOS系统上看到以下奇怪的输出,用于上述小型独立可重现代码.

1]
macOS 10.12 + HFS+
File type: 25
File system name: autofs
File type: 23
File system name: hfs

2] …
Run Code Online (Sandbox Code Playgroud)

c++ filesystems macos posix macos-high-sierra

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