您好,我有一个用 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
最佳答案
您需要为 fwrite
和 FILE
包含 stdio.h
。
#include <stdio.h>
该标准允许 header 包含其他 header ,但您不能依赖这些间接包含。您需要明确包含您打算使用的每个 header 。
关于C++ 程序编译在 Ubuntu 中失败,但在 MacOS 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21953610/