C++ 程序编译在 Ubuntu 中失败,但在 MacOS 中运行

标签 c++ macos ubuntu g++ g++-4.7

您好,我有一个用 C++ 编写的程序。当我使用 g++ 编译器在 Mac 终端中编译它时,它会编译并运行。但是当我在 Ubuntu 终端中使用 g++ 编译器编译相同的 C++ 程序时,它失败了。我不知道为什么会这样。

Ubuntu 中的 g++ 编译器版本是 4.7.3。

这是我的代码示例

#include <iostream>

using namespace std;

#define IXSIZE 400
#define IYSIZE 400
#define IZSIZE 3

void putbyte(FILE *outf, unsigned char val)
{ 
    unsigned char buf[1]; 

    buf[0] = val; 
    fwrite(buf,1,1,outf); 
} 

void putshort(FILE *outf, unsigned short val) 
{ 
    unsigned char buf[2]; 

    buf[0] = (val>>8); 
    buf[1] = (val>>0); 
    fwrite(buf,2,1,outf); 
} 

出现以下错误

seperate.cpp:在函数‘void putbyte(FILE*, unsigned char)’中: seperate.cpp:23:21: 错误:‘fwrite’ 未在此范围内声明 seperate.cpp: 在函数‘void putshort(FILE*, short unsigned int)’中: seperate.cpp:32:21: 错误:‘fwrite’未在此范围内声明 seperate.cpp: 在函数‘int putlong(FILE*, long unsigned int)’中: seperate.cpp:43:28: 错误:‘fwrite’未在此范围内声明 seperate.cpp:在函数“short unsigned int getshort(FILE*)”中: seperate.cpp:49:22: 错误:“fread”未在此范围内声明 seperate.cpp:在函数“long int getlong(FILE*)”中: seperate.cpp:56:22: 错误:“fread”未在此范围内声明 seperate.cpp: 在函数‘int main(int, char**)’中: seperate.cpp:88:11: 错误:未在此范围内声明“stderr” seperate.cpp:88:69: 错误:“fprintf”未在此范围内声明 seperate.cpp:89:9: 错误:未在此范围内声明“exit” seperate.cpp:93:30: 错误:“fopen”未在此范围内声明 seperate.cpp:95:11: 错误:“stderr”未在此范围内声明 seperate.cpp:95:61: 错误:“fprintf”未在此范围内声明 seperate.cpp:96:9: 错误:未在此范围内声明“exit” seperate.cpp:101:22: 错误:‘fgetc’未在此范围内声明 seperate.cpp:114:18: 错误:“SEEK_CUR”未在此范围内声明 seperate.cpp:114:26: 错误:“fseek”未在此范围内声明 seperate.cpp:126:38: 错误:“fread”未在此范围内声明 seperate.cpp:131:12: 错误:‘fclose’未在此范围内声明 seperate.cpp:138:25: 错误:“fopen”未在此范围内声明 seperate.cpp:141:11: 错误:“stderr”未在此范围内声明 seperate.cpp:141:54: 错误:“fprintf”未在此范围内声明 seperate.cpp:142:9: 错误:在此范围内未声明“exit” seperate.cpp:153:36: 错误:‘fwrite’未在此范围内声明 seperate.cpp:162:11: 错误:“stderr”未在此范围内声明 seperate.cpp:162:54: 错误:“fprintf”未在此范围内声明 seperate.cpp:163:9: 错误:未在此范围内声明“exit” seperate.cpp:174:36: 错误:‘fwrite’未在此范围内声明 seperate.cpp:183:11: 错误:未在此范围内声明“stderr” seperate.cpp:183:54: 错误:“fprintf”未在此范围内声明 seperate.cpp:184:9: 错误:未在此范围内声明“exit” seperate.cpp:195:36: 错误:‘fwrite’未在此范围内声明 dfo@ubuntu:~/Desktop/abc-master$ g++ -v

最佳答案

您需要为 fwriteFILE 包含 stdio.h

#include <stdio.h>

该标准允许 header 包含其他 header ,但您不能依赖这些间接包含。您需要明确包含您打算使用的每个 header 。

关于C++ 程序编译在 Ubuntu 中失败,但在 MacOS 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21953610/

相关文章:

c++ - 关于 shared_ptr 我不明白的事情

python - OSError : [Errno 30] Read-only file system: '/User' . macOS Catalina

java - Watij 的 JxBrowser OS X/Java 1.6_64 不兼容?

shell - Cron 作业不运行

c++ - 返回静态变量的成员函数

c++ - 计算 JSON 中的条目数并相应地执行代码

macos - 如何在不阻塞的情况下从命令行启动 Emacs For Mac OS X?

ubuntu - 如何与 Flask 后端 api 一起构建 Angular 2 前端应用程序?

ubuntu - 在 ubuntu 13.04 上安装 glfw3 - 出现错误

c++ - 为什么 std::fstream 以它的方式设置 EOF 位?