Skip to content

Instantly share code, notes, and snippets.

@Endle
Created August 7, 2014 00:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Endle/d5180e69bbcc1cfebc02 to your computer and use it in GitHub Desktop.
Save Endle/d5180e69bbcc1cfebc02 to your computer and use it in GitHub Desktop.
Talk in IRC about code style
<endle> 你为什么不用 int 呢?
<StarBrilliant> 不是表示运算用的整数不要用int
<StarBrilliant> 只有用来运算的时候才用int
<StarBrilliant> 比如,如果是表示内存中一个东西的大小
<StarBrilliant> 用 size_t
<StarBrilliant> 如果是表示时间的秒数用 clock_t
<StarBrilliant> 表示字符用 wchar_t
<StarBrilliant> 这些都是等价的整数
<StarBrilliant> 但是不是 int
<endle> 哦,明白你的意思了
<StarBrilliant> 因为 int 是当前计算机架构运算最方便的整数
<StarBrilliant> int是用来做数学运算的
<endle> 的确是编程的好习惯
<StarBrilliant> 不是度量指针的
<StarBrilliant> 如果真的要把指针转换成整数,用 size_t
<StarBrilliant> 还有
<StarBrilliant> 如果表示文件大小
<StarBrilliant> 用 off_t 和 off64_t
<StarBrilliant> 也不要用 int
<StarBrilliant> 我猜 Sleepwalking 一定也用 int 表示文件大小了吧?
<StarBrilliant> long long 不是C标准,而且你也不知道 long long 到底有多long
<StarBrilliant> 当年还说long是32位的呢
<StarBrilliant> 现在不是被推翻了?
<endle> 都乱掉了
<endle> 我记得有一个表,整理各个编译器在不同平台下对这些变量的解释
<StarBrilliant> 比如FFmpeg的源码就要求不用 long long 或 __int64,如果明确要用64位,用 int64_t。
<StarBrilliant> 所以不要去背那些解释
<StarBrilliant> 去看字面意思
<StarBrilliant> 比如 long 就是不短于 int 的整数
<StarBrilliant> long long 就是不位于long的整数
<endle> 恩,你说的对
<StarBrilliant> 现在只有char是固定1 byte的
<StarBrilliant> 神一样的fall-through https://github.com/Rocaloid/RUCE/blob/master/src/GetPara.c#L44
<titlbot> ⇪标题: RUCE/GetPara.c at master · Rocaloid/RUCE · GitHub
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment