小编RED*_*AIR的帖子

boost :: spirit中的运算符优先级?

我使用spirit mini_c样本进行了一些测试.不幸的是,它没有像预期的那样保持运算符的优先级:

int main()
{
    return 3 > 10 || 3 > 1;
}
Run Code Online (Sandbox Code Playgroud)

评估为0.

return (3 > 10) || (3 > 1);
Run Code Online (Sandbox Code Playgroud)

返回1

我试图移动"||"的定义 和"&&"到构造函数的顶部

template <typename Iterator>
expression<Iterator>::expression(
Run Code Online (Sandbox Code Playgroud)

但这并没有改变任何事情.如何解决这个问题.我正在使用boost 1.3.38.

c++ parsing boost boost-spirit

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

繁忙的应用程序导致Windows 7上的错误"无响应"状态 - WM_UPDATE

在长期操作期间,我们的C++ Win32应用程序显示一个带有进程条的模态状态对话框,每隔几秒左右就会更新一次.从Windows 7开始,我们意识到Windows很快会显示一条消息"似乎挂起......"和/或在我们的窗口标题栏中附加"不响应".

我们发现进程对话框必须处理消息以避免这种情况.更具体地说,似乎Windows 7不断发送WM_UPDATE消息以检查我们的程序是否存活.我们以前在此对话框中禁用了所有不需要的消息处理,因为配置文件运行显示它们是一个主要的减速.

但是虽然我们认为已经修复了这个问题,但是用户再次报告了这些问题:Windows显示"似乎挂起......"和/或在我们的窗口标题栏中附加"不响应",尽管我们每隔几秒就会处理所有事件.

问题:

  • 是否有关于Windows 7(或Windows Vista)中此行为更改的任何文档?我们还没有发现任何.我们还发现了许多其他消息传递行为的变化.

  • 是否有可能从Windows禁用所有这样的"活着"检查?我们的应用程序非常活跃,流程可能需要很长时间.

编辑:更具体一点 - 我们每隔几秒钟才会调用消息泵PeekMessage/ TranslateMessage/ DispatchMessage.

由于这是一个相当古老的遗留程序,因此在不久的将来不可能使用单独的工作线程.我们当然会为新代码做到这一点.请注意,我的主要观点是这种行为肯定会在Windows Vista/Windows 7中发生变化.我还没有找到任何文档.

c++ winapi message-queue windows-7

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

如何为boost :: asio添加代理支持?

在我的桌面应用程序中,我使用boost :: asio添加了对各种Internet资源的访问.我所做的就是发送http请求(即映射磁贴服务器)并读取结果.我的代码基于asio sync_client示例.

现在,我收到了无法使用这些功能的客户的报告,因为他们在公司中运行代理.在Web浏览器中,他们可以输入代理的地址,一切都很好.我们的应用程序无法下载数据.

如何为我的应用程序添加此类支持?

c++ proxy boost-asio

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

是否有GetThemeColor/Visual Styles API的有效参数组合列表

我试图检索任务栏和/或我的应用程序主窗口的背景和文本颜色.原来,Windows 7没有返回正确的颜色.如果我切换到粉红色的主题,Windows 7仍然返回浅蓝色的窗口标题,虽然那不是真的.这发生在使用

GetSysColor(COLOR_ACTIVECAPTION); 
Run Code Online (Sandbox Code Playgroud)

以及使用HTHEME hTheme = OpenThemeData(hwnd,L"WINDOW");

HRESULT result = GetThemeColor(      
                hTheme,
                WP_CAPTION, 
                CS_ACTIVE, 
                TMT_FILLCOLORHINT, 
                &color);
Run Code Online (Sandbox Code Playgroud)

此外,我发现自己尝试各种参数组合来找出标题文本的颜色.我知道microsofts页面

财产标识符部分和国家

但这些数百个参数的大多数组合都是无效的.是否有任何列表和/或描述可以使用哪些组合?

 GetThemeColor(      
                    hTheme,
                    WP_CAPTION, // BP_PUSHBUTTON,
                    CS_ACTIVE, 
                    TMT_CAPTIONTEXT,
                    &color);
Run Code Online (Sandbox Code Playgroud)

返回"未找到元素".

c windows winapi windows-themes windows-7

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

如果我调用GlobalLock(),然后无法调用GlobalUnlock()会发生什么?

在Win32中为了将数据粘贴到我必须调用的剪贴板中GlobalAlloc(),然后GlobalLock()获取指针,然后复制数据,然后调用GlobalUnlock()SetClipboardData().

如果代码是在C++中,则可能在调用之间抛出异常GlobalLock(),GlobalUnlock()并且如果我不处理,GlobalUnlock()则不会调用它.

这是一个问题吗?如果我打电话GlobalLock(),无论出于何种原因跳过配对GlobalUnlock()电话会发生什么?

windows winapi memory-management visual-c++

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

在哪里可以找到不同STL容器复杂性(性能)的比较?

我google了很长一段时间才找到一个比较,显示插入/推送擦除/弹出等所有STL-Containers的复杂性差异.我没有找到任何.我的所有STL书籍也没有.任何提示?

我当然知道一些经验法则.但是定义在哪里?

c++ performance complexity-theory stl

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

"包含字符串"的快速索引

在我的应用程序中,我有数百万个短字符串(大多数短于32个字符).我想实现一个带有附加列表的搜索框,该列表仅包含包含在搜索框中输入的整个字符串的元素.我怎样才能预建一个索引来快速找到这样的字符串?所有已排序的STL容器都会检查整个字符串.

对于输入的搜索字符串"str",我需要找到所有包含"str"的字符串:"main street","struve","ustr"等.

c++ algorithm stl

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

C++:有没有办法通过更改长声明来避免冗余?

这总是让我误以为C和C++:

在我的头文件中,我有类似的东西:

bool UpdateWindow( int w, int h, char bpp, bool force, char* someOtherLongStuff )
Run Code Online (Sandbox Code Playgroud)

现在,如果我想因任何原因改变它,我必须在头文件和源文件中这样做 - 这在我看来很烦人.

有没有办法实现自动化?

我正在使用Visual Studio 2010

c c++ visual-studio-2010 visual-studio

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

如何忽略LNK2005和LNK1169?

所以我有一个使用外部库的Visual Studio 2010项目,为了在没有LNK2005的情况下进行编译,我不得不在链接器设置中处理库的顺序.

我让它在发布模式下编译良好,但无论出于何种原因,我都无法在调试中没有LNK错误的情况下编译它.

是否通常无法忽略LNK2005并告诉链接器只使用他遇到的任何内容?

谢谢!

//编辑:这里是一些特殊问题输出的错误.但是我已经尝试以不同的方式解决这个问题,每个解决方案给我带来不同的链接器问题 因此,我正在寻找忽略LNK2005的一般解决方案

Error 7 error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 8 error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 9 error LNK2005: _exit already defined in Libcmtd.lib(crt0dat.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 10 error LNK2005: __invalid_parameter already defined in Libcmtd.lib(invarg.obj) ...\msvcprtd.lib(MSVCP100D.dll)

...

Error 37 error LNK1169: one or more multiply defined symbols found

c++ linker-errors visual-studio-2010 lnk2005

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

为什么在调试过程中,窗口标题黑色和按钮有时无框架

调试我的Win32应用程序时,窗口和对话框有时(很少)不会出现在所选的Windows方案中,而是减少或损坏:

在此输入图像描述

窗口标题全部为黑色(而不是蓝色或银色),没有任何阴影.按钮没有任何按钮形状(屏幕截图中的"Abbrechen").下半部分的黑条是一个窗口进度条.发生这种情况时,它不会显示任何进展.

屏幕截图(中心的灰色细节)取自在XP SP3 x64和10 GB机器上的Visual Studio 2010下调试的64位应用程序.有足够的RAM(一些GB)备用.

有没有人知道原因?我从不做非客户区绘图或其他什么.

编辑:仅当Visual Studio调试程序已附加到该程序时,才会出现此症状.但即使应用程序已从调试器中分离出来,问题仍然存在.在没有调试的情况下启动程序时不会发生.

c++ windows debugging windows-xp visual-studio-2010

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