我碰巧遇到了一个宏定义,如下面的c ++代码所示(https://github.com/LairdCP/UwTerminalX).
#define SpeedModeInactive 0b00
#define SpeedModeRecv 0b01
#define SpeedModeSend 0b10
#define SpeedModeSendRecv 0b11
Run Code Online (Sandbox Code Playgroud)
当我尝试使用visual studio 2010编译它时,它给我以下错误.
Error 14 error C2059: syntax error : ')'
Run Code Online (Sandbox Code Playgroud)
这个宏是什么意思?宏的用法如下所示.
if ((gchSpeedTestMode == SpeedModeSendRecv || gchSpeedTestMode == SpeedModeRecv) && (gintSpeedBytesReceived10s > 0 || ui->edit_SpeedBytesRec10s->text().toInt() > 0))
{
//Data has been received in the past 10 seconds: start a timer before stopping to catch the extra data packets
gchSpeedTestMode = SpeedModeRecv;
gtmrSpeedTestDelayTimer = new QTimer();
gtmrSpeedTestDelayTimer->setSingleShot(true);
connect(gtmrSpeedTestDelayTimer, SIGNAL(timeout()), this, SLOT(SpeedTestStopTimer()));
gtmrSpeedTestDelayTimer->start(5000);
//Show message that test will end soon
ui->statusBar->showMessage("Waiting 5 seconds for packets to be received... Click cancel again to stop instantly.");
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这是因为visual studio不能识别二进制值(从0bXXX开始),但是,您可以简单地将其定义为十六进制值:
#define SpeedModeInactive 0x0
#define SpeedModeRecv 0x1
#define SpeedModeSend 0x2
#define SpeedModeSendRecv 0x3
Run Code Online (Sandbox Code Playgroud)
二进制文字的使用最初是在C++ 14中引入的,VS2010不支持,https: //en.wikipedia.org/wiki/C%2B%2B14#Binary_literals
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |