gcc可以编译但g++不能

HammerMax
  • 123

遇到一个问题,一段程序用gcc可以正常编译,但g++就不行。如下
image.png

这是在《unix环境编程》中的一段代码

#include "apue.h"  
#include <dirent.h>  
  
int main(int argc, char *argv[])  
{  
    DIR     *dp;  
    struct dirent *dirp;  
  
    if (argc != 2)  
    {  
        err_quit("usage: ls directory\_name");  
    }  
  
    if ((dp = opendir(argv\[1\])) == NULL)  
    {  
        err_sys("can't open %s", argv\[1\]);  
    }  
  
    while ((dirp = readdir(dp)) != NULL)  
        printf("%s\\n", dirp->d\_name);  
  
  
    closedir(dp);  
    exit(0);  
}

既然gcc能编译,说明库文件都没什么问题。为什么g++就报错找不到对应函数的实现呢?

回复
阅读 1.2k
1 个回答
✓ 已被采纳

你的 apue 是 c 库。

#ifdef __cplusplus
extern "C" {
#endif

#include "apue.h" // 将就着这样解决吧。其实应该在 apue.h 里边加 extern "C"

#ifdef __cplusplus
}
#endif

具体去了解一下 extern "C"

你知道吗?

宣传栏