让我们考虑这段代码:
#include <iostream>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
using namespace std;
int main(void) {
char hi[14] = "Hello world!\n";
if (write(1, hi, strlen(hi)) < 0) {
perror("write");
}
cout << "Done" << endl;
return 0;
}
在这里,我将各种C和C代码混合在一起以使某些事情起作用.我直接在stdout上编写并使用一些C头文件,例如string.h和stdio.h.这算不好吗?会出现不确定的行为吗? C代码是否与C“兼容”,所以我只包含它并使用它?
该程序工作正常.
Hello world!
Done
解决方法:
Is this considered bad?
当有高级C库函数可用时,一些程序员认为使用C库函数是不好的样式.但是,在某些情况下,最好使用C库函数.
Could undefined behavior arise?
可能不是. C标准库几乎包含了整个C标准库(有一些小的更改),因此从C对C库函数的调用是明确定义的.至于写等功能,其行为由POSIX定义.
Is C code “compatible” with C++ so I just include it and use it?
对于标准C库标头,可以.对于实现标头,通常为yes;它们通常被设计为可以有效地包含在C程序中.对于其他标题…也许.并非所有的C代码都是有效的C,但是兼容性程度很高.
标签:c-3,linux,c-4 来源: https://codeday.me/bug/20191118/2027492.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。