Gra*_*tts 2 c++ compiler-construction macos file-io constants
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
const int FILENAME_MAX=20;
int main() {
ifstream input;
char name[FILENAME_MAX + 1];
int value;
do {
cout << "Enter the filename (maximum of " << (FILENAME_MAX+1)
<< " characters: ";
cin >> name;
input.open(name);
} while(input.fail() );
while(input >> value) {
int count=1;
cout << "value #" << count << "\t" << value << endl;
count++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是一段非常简单的代码,用于从文件中读取一些数字.不幸的是我无法编译.在"const int FILENAME_MAX = 20;"行之后/上有一个错误 错误显示"数字常量之前预期的非限定id".
有人可以告诉我我做错了什么吗?
我正在使用Xcode 3.0在Mac OS 10.5.8上进行编译
FILENAME_MAX
是由标准库*定义的宏,因此它已被用作标识符.当您尝试将其用作标识符时,它实际上在预处理期间被替换为某个数字.数字不是有效的标识符,因此您会收到错误.(这就是为什么它说"我期待一个标识符,而不是一个数字常量.")
将其重命名为其他内容.(或者使用std::string
,虽然看起来你还没到那里.)
*由...定义<cstdio>
.虽然您不直接包含它,但其他标准库头可以随意包含任何其他标准头文件.