小编Gio*_*hal的帖子

#define中的C++ void cast和operator逗号

我在阅读一些源代码时发现了这一点.

 #define MACRO(x)  if((void) 0, (x)); else some_func();
Run Code Online (Sandbox Code Playgroud)

我不完全理解操作符逗号和void转换背后的原因.这可能与宏保护有关,我知道(void)0有时用来保护else宏中的级联,例如in if(...) then foo(); else (void)0.

为什么运算符逗号有什么想法?

编辑:我开始认为这与猫头鹰有关 (0,0).

c++ macros

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

HTML5画布调整为父级

我想调整canvas元素的大小,以便在适合其父元素时,无论是<body>("全屏")还是某些<div>(例如).这是我的尝试:

// called at each frame
function update() {
    var canvasNode = document.getElementById('mycanvas');
    canvasNode.width = canvasNode.parentNode.clientWidth;
    canvasNode.height = canvasNode.parentNode.clientHeight;
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,帆布不会停止增长!也许client*不是正确的参数?

请参阅此处的代码:http: //jsfiddle.net/ARKVD/24/

javascript html5 dom canvas html5-canvas

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

信号量的共识数是多少?

(我认为)互斥锁的共识数是2.

信号量的共识数是多少(如pthread_sem_*)?

条件变量的共识数是多少(如pthread_cond_*)?

synchronization mutex semaphore pthreads condition-variable

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

在std :: map中引用为键

假设一些数据结构:

typedef struct {
    std::string s;
    int i;
} data;
Run Code Online (Sandbox Code Playgroud)

如果我在类型映射中data.s添加实例时使用该字段作为键,那么字符串是否会被复制?擦除地图元素是否安全,因为引用将变为无效?datastd::map<std::string&, data>

这些问题的答案也适用于unordered_map

编辑:

这是我目前的解决方案......但是向地图添加迭代器是UGLY:

typedef struct {
    const std::string* s;
    int i;
} data;

std::map<std::string, data> map;
typedef std::map<std::string, data>::iterator iterator;

// add an element to the map
iterator add_element(const std::string& s) {
    std::pair<iterator, bool> p = states.insert(std::make_pair(s, data()));
    iterator i = p.first;
    if(p.second) {
        data& d = (*i).second;
        d.s = &(*i).first;
    }
    return i;
}
Run Code Online (Sandbox Code Playgroud)

c++ reference map

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

C++:构造和初始化顺序保证

我对C++中的构造和初始化顺序保证有些怀疑.例如,下面的代码有四个班X,Y,ZW.main函数实例化一个对象class X,该对象包含一个对象class Y,并从中派生出来class Z,因此将调用两个构造函数.另外,const char*传递给X构造函数的参数将被隐式转换为对象class W,因此W也必须调用构造函数.

C++标准对复制构造函数的调用顺序有什么保证?或者,等效地,该程序可以打印什么?

#include <iostream>

class Z {
   public:
   Z() { std::cout << "Z" << std::endl; }
};

class Y {
   public:
   Y() { std::cout << "Y" << std::endl; }
};

class W {
   public:
   W(const char*) { std::cout << "W" << std::endl; }
};

class X : public Z {
   public:
   X(const W&) …
Run Code Online (Sandbox Code Playgroud)

c++ constructor initialization-order

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

C++模板duck-typing与纯虚基类继承

在模板duck-typing和纯虚基类继承之间进行选择的指导原则是什么?例子:

// templates
class duck {
    void sing() { std::cout << "quack\n"; }
};

template<typename bird>
void somefunc(const bird& b) {
    b.sing();
}

// pure virtual base class
class bird {
    virtual void sing() = 0;
};

class duck : public bird {
    void sing() { std::cout << "quack\n"; }
}

void somefunc(const bird& b) {
    b.sing();
}
Run Code Online (Sandbox Code Playgroud)

c++ inheritance templates base-class pure-virtual

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

如何用Qt播放声音

我如何用Qt播放声音?我试过这个:

QSound::play("sounds/croack.wav");
Run Code Online (Sandbox Code Playgroud)

QSound在我的ubuntu上不起作用(似乎它需要NAS,虽然在我安装之后它仍然无效).有一个简单的单行Qt解决方案还是我需要投入SDL或其他东西?

audio qt

12
推荐指数
3
解决办法
3万
查看次数

LaTeX:边距中的排版章节和节号

我试图在LaTeX中排版一些东西,我想知道我是否正确行事.基本思想是节号悬挂在左边距.对于章节标题,该数字采用标题+ 2行的高度,对于子标题采用+1行,并且与子部分的标题具有相同的高度,并且与标题的顶部对齐.请参阅下图以了解我在说什么:

http://img62.imageshack.us/img62/8404/bladld.png

我的方法是使用titlesec并做这样的事情:

\titleformat{\chapter}%
            {\Huge\bfseries\sffamily}% format
            {\vbox to 16pt{\llap{% label
               \fontsize{3em}{0}\selectfont{\thechapter}%
               \hskip 9pt%
            }}}%
            {0pt}% horizontal sep
            {}% before

\titlespacing*{\chapter}%
              {0pt}% left
              {-2em}% before
              {0pt}% after
Run Code Online (Sandbox Code Playgroud)

但是这个解决方案有一些我宁愿避免的黑客攻击.该\vbox例如高度,通过反复试验才发现.在视觉上,它看起来几乎是正确的......

latex typesetting

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

将C++编译成可移植的Linux二进制文件

好的,这个问题是关于便携式的,因为没有依赖关系(即"我可以将二进制文件放在USB密钥中,随身携带,发送给朋友等等").

我听说过静态连接,但我很困惑它的后果是什么; 什么可以和什么不能静态链接(即Qt,OpenGL,libstdc ++怎么样?)以及之后二进制将"可移植"的程度.

我也听说过LSB(Linux标准基础版),但我不确切地知道它是什么,或者它在这个意义上是否有帮助.

c++ portability portable-executable static-linking

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

为什么Boost.ProgramOptions不是仅限标题?

一些boost库只是标题库,有些不是,并且由于各种原因等.

是否有特定的原因/设计决定为什么Boost.ProgramOptions不是标题?

我想知道因为它声称它的文档中是一个"小"库,我没有看到任何与系统相关的原因(如线程或asio).

c++ boost boost-program-options header-only

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