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

C++;程序编译在Ubuntu中失败,但在MacOSX中工作 我有一个用C++编写的程序。当我用g++编译器在Mac终端上编译它时,它会编译并运行。但是,当我用C++编译器在Ubuntu终端中编译相同的C++程序时,它失败了。我不知道为什么会这样,c++,macos,ubuntu,g++,g++-4.7,C++,Macos,Ubuntu,G++,G++ 4.7,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,

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); 
} 
#包括
使用名称空间std;
#定义IXSIZE 400
#定义尺寸400
#定义尺寸3
void putbyte(文件*outp,无符号字符val)
{ 
无符号字符buf[1];
buf[0]=val;
写入(buf,1,1,输出);
} 
void putshort(文件*outp,未签名的short val)
{ 
无符号字符buf[2];
buf[0]=(val>>8);
buf[1]=(val>>0);
写入(buf,2,1,输出);
} 
我得到以下错误

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

您需要为
fwrite
文件包含
stdio.h

#include <stdio.h>
#包括

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

您需要为
fwrite
文件包含
stdio.h

#include <stdio.h>
#包括

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

代码。我们需要看你的密码。请把密码贴出来。没有它,我们不能为你做任何事;我们只能猜测问题可能是什么。请发布一个最小的测试用例、编译器调用和error.Code。我们需要看你的密码。请把密码贴出来。没有它,我们不能为你做任何事;我们只能猜测问题可能是什么。请发布一个最小的测试用例、编译器调用和错误。@例如,
iostream
可以包含它。正如我在回答中所说,您不能依赖于这种行为。@akavi_paracha例如,它可以包含在
iostream
中。正如我在回答中所说,你不能依赖这种行为。