小编Gep*_*ard的帖子

使用intptr_t而不是void*?

使用intptr_t作为通用存储(保存指针和整数值)而不是void*?(如下所示:http://www.crystalspace3d.org/docs/online/manual/Api1_005f0-64_002dBit-Portability-Changes.html)

对于我已经读过的内容:

  • int- > void*- > int往返不保证保持原值; 我猜int- > intptr_t- > int会的
  • 两个指针算术void*intptr_t要求铸件,所以没有在这里得到好处
  • void*表示存储指针时的显式转换次数较少,intptr_t表示存储整数值时转换次数较少
  • intptr_t 需要C99

我还应该考虑什么呢?

c pointers void-pointers intptr 32bit-64bit

23
推荐指数
2
解决办法
3万
查看次数

printf和不安全的格式化字符串

有问题的应用程序允许用户在纯文本配置文件中定义自己的消息(主要用于定制和/或本地化目的),这些消息在运行时传递给printf样式的函数.如果用户定义的格式化字符串有问题,可能会发生很多不好的事情.

清理这些用户输入的格式化字符串的最佳方法是什么?或者我应该完全放弃这种方法并使用另一种方法让用户安全地自定义消息?

解决方案必须以某种方式移植(Windows,Linux,BSD,x86,x86-64).

c printf user-input string-formatting

3
推荐指数
1
解决办法
835
查看次数