具体来说,我想写一个宏
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)
一定有更好的方法.
编辑
谢谢 …
给定一个 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 …