如何在 C 中将文字初始化为 size_t?

Lar*_*röm 3 c

我和这个问题有同样的问题,只不过我写的是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,但它并不适用于所有架构。

dbu*_*ush 5

没有特定于 的后缀size_t。您需要使用强制转换。

#define myprint(S) { printf("hello %zu", (size_t)S); }
Run Code Online (Sandbox Code Playgroud)

考虑到它的使用方式,无论如何这是最好的方法。