printf(":%m\n"),exit(-1);

fd = open("test.txt", O_RDWR);
if(fd==-1)
printf(":%m\n"),exit(-1);

之前没有在printf中用过%m, 今天看到这段代码 觉得理解不了,有大佬愿意解释一下吗?
还有printf语句和exit语句中间的逗号是什么作用?

%m是输出错误信息的,但是逗号就不知道了,c语句结束应该是分号,估计写错了吧,

不是写错了 c语言里面有个逗号表达式,,意思是 输出了错误信息 后退出程序

%m是GNU C Library 对printf的扩展。
意思是输出错误码对应的字符串。

printf(":%m\n")         相当于
printf(":%s\n", strerror (errno))

printf语句和exit语句中间的逗号,代表这是一个逗号表达式,逗号表达式的优先级别最低,
其求解过程是先表达式1,后表达式2,整个表达式值是表达式2的值。

如果想详细了解,可以参考:
http://c.biancheng.net/cpp/html/27.html

用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!