小编dog*_*wgm的帖子

如何在C++中的空语句上设置断点?

具体来说,我想写一个宏

1)允许我设置断点
2)什么都不做
3)导致没有编译器警告

#define NO_OP   ((void)0)

void main()
{
    bool b = true;
    if (b)
        NO_OP;  // I try to set a breakpoint here, but

}               // it jumps to here (in Visual Studio 2010)
Run Code Online (Sandbox Code Playgroud)

我也试过了

#define NO_OP   (assert(1))             // doesn't work
#define NO_OP   (sizeof(int))           // doesn't work
#define NO_OP   __asm{}                 // doesn't work
#define NO_OP   do {(void)0;} while(0)  // warning: conditional is constant
Run Code Online (Sandbox Code Playgroud)

到目前为止唯一有效的是令人畏缩的

#define NO_OP   { int x = 0; x = x; }
Run Code Online (Sandbox Code Playgroud)

一定有更好的方法.

编辑
谢谢 …

c++ debugging visual-studio-2010

16
推荐指数
3
解决办法
2008
查看次数

如何使用 IPropertyStore 通过 C++ 访问 Windows 中的 mp3 元数据?

给定一个 mp3 文件的路径,

如何创建和初始化 IPropertyStore 对象以对该文件的元数据进行操作?

具体来说,我如何从这里得到:

"C:\\Music\\Viva Las Vegas.mp3"
Run Code Online (Sandbox Code Playgroud)

到这里:

store->GetValue(PKEY_Music_AlbumArtist, &variant);
Run Code Online (Sandbox Code Playgroud)

这里有一些伪代码来帮助澄清我正在尝试做的事情:

#include "stdafx.h"
#include <propsys.h>
#include <propkey.h>

void main ()
{
    // property store must somehow represent the mp3 file
    IPropertyStore* store = "C:\\Music\\Viva Las Vegas.mp3"; // HELP!
    PROPVARIANT variant;

    // get the existing album artist
    store->GetValue(PKEY_Music_AlbumArtist, &variant);
    assert(variant== "Elvis Presley");

    // set it to something else
    variant= "ZZ Top";
    store->SetValue(PKEY_Music_AlbumArtist, variant);
}
Run Code Online (Sandbox Code Playgroud)

背景

也许有一种更好的语言可以做到这一点,但我想使用 C++(这是一个很长的故事)。

最初,在研究了 mp3 元数据之后,似乎使用 TagLib 的 ID3 标签是要走的路。所以我写了一个在几个领域都运行良好的实用程序。但后来我发现 TagLib 仅限于许多可能字段的一小部分,我想访问所有这些字段。

我最关心的领域是专辑艺术家,因为 Windows …

c++ windows mp3 metadata

4
推荐指数
1
解决办法
3753
查看次数

标签 统计

c++ ×2

debugging ×1

metadata ×1

mp3 ×1

visual-studio-2010 ×1

windows ×1