" C"之间的许可差异和" extern C"

时间:2017-11-13 20:47:25

标签: c++ c qt

我正在尝试在C ++函数中使用C中的函数。

此功能的一部分涉及使用fopen:

FILE * fd = NULL;
fd = fopen("/sys/platform/dacc/config","w");
if(!fd){
    perror("Platform configuration failed:");
    return -1;
}
fwrite(conf,1,4096,fd);
fclose(fd);
return 0;

我在C中有一些代码可以按照我想要的方式进行操作。我想使用Qt将此操作连接到一个按钮,在这里询问了一个问题后,我能够使用" extern C"来调用该函数。将它包含在我的c ++代码中。

现在我有相同的代码在C ++中运行,但是我无法再打开相关文件。相反,我现在得到fopen返回的null,而perror给出了消息

Platform configuration failed: Permission Denied

这让我感到困惑,因为我的C测试代码是从没有任何高程的终端运行的,所以我没有权限应该是任何类型的问题。

运行C代码的程序可用的权限与包含C代码的C ++程序可用的权限是否存在差异?

1 个答案:

答案 0 :(得分:2)

使用" extern C"时,权限没有区别关键词。这只是阻止编译器破坏函数的名称。