小编zha*_*fei的帖子

何时应该在C++中使用BOOL和bool?

何时应该在C++中使用BOOL和bool?为什么?

我认为使用bool更清洁,更便携,因为它是内置类型.但是当你使用遗留代码/ C代码进行交互,或者使用C代码/ Windows API从.NET进行交互操作时,BOOL是不可避免的.

所以我的政策是:在C++中使用bool.与外界交谈时使用BOOL,例如windows DLL中的导出功能.

关于何时使用一个而不是另一个,是否有明确的解释?

c++ windows

20
推荐指数
2
解决办法
6109
查看次数

是否可以在intel/64-bit win7上的32位应用程序中使用64位指令

我的环境是64位win7,VC2010.

当然,intel里面是64位CPU.

我可以在32位应用程序中使用64位指令/本机机器字(64位)吗?由于我的大多数代码都是32位,我不想将其移植到64位.

对于一些性能关键的热代码,我想通过编译器内部或内联汇编手动优化它(也是64位VC编译器不支持内联汇编),是否可以运行64位代码fox示例mov rax,rbx in a 32位模式应用?

c++ assembly

4
推荐指数
2
解决办法
695
查看次数

在C/C++中编写正则表达式时如何避免反斜杠转义

对于正则表达式\ w +\d,在许多脚本语言中,例如perl/python,它可以按字面编写.但是在C/C++中,我必须把它写成:

const char *re_str = "\\w+\\d";
Run Code Online (Sandbox Code Playgroud)

这是丑陋的眼睛.

有什么办法可以避免吗?MACRO也可以接受.

c c++ regex

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

这种优化是否是编译器错误?

声明:我使用vs 2010/vs 2013,并使用预先构建的二进制文件3.4.

我在生产代码中发现了一个错误.我将重现代码最小化为以下内容:

#include <windows.h>
#include <process.h>
#include <stdio.h>
using namespace std;

bool s_begin_init =  false;
bool s_init_done =  false;

void thread_proc(void * arg)
{
    DWORD tid = GetCurrentThreadId();
    printf("Begin Thread %2d, TID=%u\n", reinterpret_cast<int>(arg), tid);
    if (!s_begin_init)
    {
        s_begin_init = true;
        Sleep(20);
        s_init_done = true;
    }
    else
    {
        while(!s_init_done) { ; }
    }
    printf("End   Thread %2d, TID=%u\n", reinterpret_cast<int>(arg), tid);
}

int main(int argc, char *argv[])
{
    argc = argc                       ; argv = argv                       ; 
    for(int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading clang visual-c++ c++11

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

在C中添加整数类型时,指针算法的工作原理如何?

在C中,给出

char arr [10];
uint32_t i = -1;
char * p = &arr [1];
Run Code Online (Sandbox Code Playgroud)

(p + i)溢出/未定义或等于&arr [0]?为什么C标准(6.5.6.8)中的指针算术规则如此令人困惑?

语言定义指针可以做+, - ,+ =, - =任何整数类型的操作,当指针添加负int值时会发生什么?如果指针的表示是4个字节但整数操作数是int64_t怎么办?

根据我的理解,C99标准在数组索引术语(6.5.6.8)中定义指针算法,它指出:

char * ptr = …;
char * new_ptr = ptr + int_expr;

assert( (new_ptr - ptr) == (int_expr) );
Run Code Online (Sandbox Code Playgroud)

什么是模糊,间接定义的原因?

c

-1
推荐指数
1
解决办法
112
查看次数

标签 统计

c++ ×4

c ×2

assembly ×1

c++11 ×1

clang ×1

multithreading ×1

regex ×1

visual-c++ ×1

windows ×1