草庐IT

nearest_larger

全部标签

c++ - 在 C++ 中清理代码以 printf size_t(或 : Nearest equivalent of C99's %z in C++)

我有一些打印size_t的C++代码:size_ta;printf("%lu",a);我希望在32位和64位架构上编译时不会出现警告。如果这是C99,我可以使用printf("%z",a);。但是AFAICT%z在任何标准C++方言中都不存在。所以相反,我必须这样做printf("%lu",(unsignedlong)a);真的很丑。如果没有打印语言内置的size_t的工具,我想知道是否可以编写一个printf包装器或类似的东西,以便在size_t上插入适当的类型转换>s以消除虚假的编译器警告,同时仍然保持良好的警告。有什么想法吗?编辑澄清我使用printf的原因:我有一个相对较大的代

c - 这个错误是什么意思: `somefile.c:200: error: the frame size of 1032 bytes is larger than 1024 bytes` ?

在制作过程中,我看到如下错误:cc1:warningsbeingtreatedaserrorssomefile.c:200:error:theframesizeof1032bytesislargerthan1024bytes行号指向具有如下签名的c函数的右大括号:voidtrace(SomeEnum1p1,SomeEnum2p2,char*format,...){charstrBuffer[1024];...该函数将一些内容打印到缓冲区中。有谁知道这种类型的错误一般是什么意思? 最佳答案 我猜该例程中有一些大缓冲区是堆栈分配的;这可