我和这个问题有同样的问题,只不过我写的是C。
如何初始化文字数字以具有类型size_t?
基本上,我有一个相当于这样的宏:
#define myprint(S) { printf("hello %zu", S); }
Run Code Online (Sandbox Code Playgroud)
我想这样使用它:
myprint(0);
Run Code Online (Sandbox Code Playgroud)
但我收到消息:
格式“%zu”需要“size_t”类型的参数,但参数的类型为“int”
我尝试过编写0lu,但它并不适用于所有架构。
没有特定于 的后缀size_t。您需要使用强制转换。
#define myprint(S) { printf("hello %zu", (size_t)S); }
Run Code Online (Sandbox Code Playgroud)
考虑到它的使用方式,无论如何这是最好的方法。