小编Baa*_*ard的帖子

写简单添加十六进制和十进制数的约定

即使是一个老朋友,我担心我不再(完全)完全掌握在C中解析常量.下面的第二个1行无法编译:

int main( void ) { return (0xe +2); }
int main( void ) { return (0xe+2); }
Run Code Online (Sandbox Code Playgroud)

$ gcc -s weird.c

weird.c: In function ‘main’:
weird.c:1:28: error: invalid suffix "+2" on integer constant
int main( void ) { return (0xe+2); }
                           ^
Run Code Online (Sandbox Code Playgroud)

根据C11标准条款6.4.4.2,编译失败的原因可能是0xe + 2被解析为十六进制浮点常量.我的问题是,是否存在在C中编写十六进制和十进制数的简单加法的约定,我不喜欢在解析时依赖于空格.

这是使用gcc版本5.4.0 20160609(Ubuntu 5.4.0-6ubuntu1~16.04.9).在预处理(-E)之后停止编译显示编译失败发生在gcc而不是cpp中.

c parsing gcc c99

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

JSON三字母文件扩展名约定

RFC7159指出,存储的JSON文件的文件扩展名应为.json。我使用只有3个字母扩展名的文件系统。在这样的系统中,JSON文件是否有任何公认的文件扩展名?

由于不存在3个字母的约定,我应该编造一些东西(例如.JON,目前不使用3个字母的扩展名),还是坚持使用.TXT

更新2019年1月16日。RFC8259已淘汰RFC7159RFC8259仍声明文件扩展名应为.json

json short-filenames

5
推荐指数
1
解决办法
426
查看次数

标签 统计

c ×1

c99 ×1

gcc ×1

json ×1

parsing ×1

short-filenames ×1