小编gab*_*lin的帖子

断点如何在C++代码中工作?

断点如何在C++代码中工作?在编译代码时,它们是否在某些汇编指令之间插入了特殊指令?或者还有其他的东西吗?此外,如何实现代码逐步执行?和断点一样......?

c++ debugging breakpoints

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

C++ Streams与C风格的IO?

我编码一些C++的小爱好的项目时,我注意到,我使用C风格的操作来访问IO( ,printf,fopen等).

在C++项目中涉及C函数是否被认为是"不良做法"?使用流而不是C风格的IO访问有什么好处?

c++ io printf iostream

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

什么样的优化在C++中"易失"?

我正在查找关键字volatile以及它的用途,我得到的答案非常多:

它用于防止编译器优化代码.

有一些示例,例如轮询内存映射硬件时:没有volatile轮询循环将被删除,因为编译器可能会识别出条件值永远不会更改.但由于只有一个例子或两个例子,它让我思考:volatile在避免不必要的优化方面我们还需要使用其他情况吗?条件变量是唯一volatile需要的地方吗?

我认为优化是特定于编译器的,因此未在C++规范中指定.这是否意味着我们必须通过直觉,说嗯,我怀疑如果我没有声明该变量volatile或者是否有任何明确的规则,我的编译器将废除它

c++ optimization volatile

25
推荐指数
3
解决办法
8600
查看次数

这个多线程C++代码需要'volatile'吗?

我用C++编写了一个Windows程序,它有时使用两个线程:一个后台线程用于执行耗时的工作; 和另一个用于管理图形界面的线程.这样,程序仍然响应用户,这需要能够中止某个操作.线程通过共享bool变量进行通信,该变量设置为true当GUI线程通知工作线程中止时.这是实现此行为的代码(我已经删除了不相关的部分):

GUI线程执行的代码


class ProgressBarDialog : protected Dialog {

    /**
     * This points to the variable which the worker thread reads to check if it
     * should abort or not.
     */
    bool volatile* threadParameterAbort_;

    ...

    BOOL CALLBACK ProgressBarDialog::DialogProc( HWND dialog, UINT message, 
        WPARAM wParam, LPARAM lParam ) {

        switch( message ) {
            case WM_COMMAND :
                switch ( LOWORD( wParam ) ) {

                    ...

                    case IDCANCEL :
                    case IDC_BUTTON_CANCEL :
                        switch ( progressMode_ ) {
                            if ( …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading volatile

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

是否应该在C++中链接异常?

我刚刚完成了一个C++程序,我已经实现了自己的异常(虽然派生自std :: exception).当一个异常导致连锁反应,向上传播错误并引起其他异常时,我应用的做法是在模块的每个适当步骤(读取类)中连接错误消息.即旧的异常本身被删除并创建一个新的异常,但是有一个更长的错误消息.

这可能适用于我的小程序,但我最终对我的方法不太满意.例如,除最后一个异常外,不保留行号(虽然目前不应用)和文件名; 实际上,在第一个例外中,这些信息最受关注.

我认为通过将异常链接在一起可以更好地处理这个问题; 即在新异常的构造函数中提供旧异常.但是如何实施呢?当它们超出方法的范围时,异常是否会死亡,从而阻止使用异常指针?如果异常可以是任何派生类,如何复制和存储异常?

这最终促使我考虑在C++中链接异常是否是一个好主意.也许应该只创建一个异常然后添加额外的数据(就像我一直在做的那样,但可能会以更好的方式)?

你对此有何回应?是否应将由另一个引起的异常链接在一起以保留某种"异常追踪" - 以及如何实施? - 或者是否应该使用单个例外并附加其他数据 - 应该如何做?

c++ exception chaining nested-exceptions

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

如何总结每10行并使用AWK计算平均值?

我有一个包含N*10行的文件,每行包含一个数字.我需要总结每10行,然后打印出每个这样的组的平均值.我知道这是可行的awk,我只是不知道如何.

awk

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

什么时候编译器可以优化破坏我的C++代码?

什么时候编译器可以进行优化会导致我的C++代码表现出错误的行为,如果没有执行这些优化,那么这些行为将不会出现?例如,volatile在某些情况下不使用会导致程序行为不正确(例如,不从内存重新读取变量的值,而只读取一次并将其存储在寄存器中).但是,在开启最具侵略性的优化标志之前,还有其他陷阱应该知道吗,然后想知道为什么程序不再起作用了?

c++ optimization

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

为什么在C++中不允许递归的main()调用?

可能重复:
对main()函数的限制
在C++中递归到main()是否合法?

我在C++ Primer中读到了main不允许递归调用的问题,并且在SO的一些相关问题中确实证实它是非法的.

但为什么这是非法的?只要你避免堆栈溢出,调用main内部的问题是什么?

c++ program-entry-point

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

如何在多核处理器上完成线程的上下文切换?

在单核处理器上进行上下文切换时,负责的代码在唯一负责切换线程的CPU上执行.

但是,当我们有多个CPU时,这是如何完成的?是否有主CPU执行所有从CPU的所有上下文切换?每个CPU是否负责自己的上下文切换?如果是这样,切换如何同步,以便两个CPU不执行相同的线程?或者是否有其他机制?

multithreading multicore context-switching

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

使用"ifstream","stringstream"和"rdbuf()"将文件内容读入字符串时如何检查I/O错误?

我正在使用以下方法将文件的内容读入字符串:

std::ifstream t("file.txt");
std::stringstream buffer;
buffer << t.rdbuf();
std::string data(buffer.str());
Run Code Online (Sandbox Code Playgroud)

但是,如何检查I/O错误并确保实际读取了所有内容?

c++ io error-handling

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