相关疑难解决方法(0)

C++或C中foo(void)和foo()之间有区别吗?

考虑这两个函数定义:

void foo() { }

void foo(void) { }
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别吗?如果没有,为什么void那里的论点?美学原因?

c c++ arguments

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

在现代C和C++中不推荐使用f(void)

我目前正在重构/整理C++项目中使用的一些旧C代码,并定期查看以下函数:

int f(void)
Run Code Online (Sandbox Code Playgroud)

我倾向于写作:

int f()
Run Code Online (Sandbox Code Playgroud)

是否有任何理由不在整个代码库中用()替换(void)以提高一致性,或者两者之间是否存在我不知道的细微差别?更具体地说,如果C++中的虚拟成员函数被描述为:

virtual int f(void)
Run Code Online (Sandbox Code Playgroud)

派生类包括成员函数:

int f()
Run Code Online (Sandbox Code Playgroud)

这是一个有效的覆盖?另外,基于几乎相同的签名,我是否可能遇到任何链接器问题?

c c++ refactoring void

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

在没有参数的函数中使用void?

在C++中使用void没有参数的函数,例如:

class WinMessage
{
public:
    BOOL Translate(void);
};
Run Code Online (Sandbox Code Playgroud)

是多余的,你不妨写一下 Translate();.

我,我自己通常都包括它,因为它在支持IDE显示的代码完成时有点帮助void,因为它确保了该函数绝对没有参数.

我的问题是,添加无void参数函数是一个好习惯吗?现代代码应该鼓励它吗?

c++ methods function void

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

C++ - 非常奇怪的机器代码行为

完整的代码在这里:http://pastebin.com/MM3vWmqA

在函数fast_generator中,我为两个语句添加了注释.如果切换这些语句,代码运行速度会快1.8倍.如果删除第一个语句,代码将比原始版本执行得更快,但与切换时相比更慢.

测试用例应如下.

第一 - 最慢.452ms.

counter++;
i--;
Run Code Online (Sandbox Code Playgroud)

第二 - 比第一个更快.280ms.

i--;
counter++;
Run Code Online (Sandbox Code Playgroud)

第三 - 比第一个快,但比第二个慢.421ms.

i--;
Run Code Online (Sandbox Code Playgroud)

原始语句的汇编器输出是.

inc edx
mov eax, 6
Run Code Online (Sandbox Code Playgroud)

我已经验证,当切换这些语句时,汇编程序输出保持不变,这些asm指令的唯一区别是互换.

我用VC++ 10和VC++ 11测试过它,行为相同.有人可以解释为什么切换这些语句会加速算法~1.8倍?如果您认为std :: clock()不准确,请更改size = 7.在我的机器上,size = 7的差异是12000ms vs 7000ms.

c++ performance assembly machine-code

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

类实例的std :: thread

我试图创建该类的两个实例,这些实例最终将使用Win32的mciSendString功能播放音乐文件。但是要进行测试,因为这是我第一次尝试使用std :: thread,所以我编写了一个test(void)方法,该方法输出类ID,我希望可以为我打印一系列的1和2,例如12122111112212121212 ...

我收到以下错误,test(void)方法确实存在吗?

错误1错误C2064:术语未求值为带有0个参数的函数

#include <iostream>
#include <thread>

typedef enum MusicStatus {
    MUSIC_PLAYING = 0, 
    MUSIC_PAUSED, 
    MUSIC_STOPPED, 
    MUSIC_IDLE
} MusicStatus, *pMusicStatus;

class MusicPlayer
{
public:

    MusicPlayer(void) {
        m_bIsPlaying = false;
        m_bIsPaused = false;
    }

    bool isPaused(void) {
        return m_bIsPaused;
    }

    bool isPlaying(void) {
        return m_bIsPlaying;
    }

    MusicStatus getState(void) {
        if ( !m_bIsPlaying && !m_bIsPaused && !m_bIsStopped )
            return MUSIC_IDLE;
        if ( m_bIsPlaying )
            return MUSIC_PLAYING;
        if ( m_bIsPaused ) 
            return MUSIC_PAUSED;
        if ( m_bIsStopped )
            return MUSIC_STOPPED;
        return …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading class c++11

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

在C++中,(void)在参数中做了什么?

我有一行代码如下:

int method(void) const;
Run Code Online (Sandbox Code Playgroud)

但是我不确定参数中的(void)是什么,或者const是什么.这也应该是一个公共'get',我不确定如何在类中接近(void)和const.

c++ methods void

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