由于某些原因,这些非常基本的代码在Visual C++中编译时没有错误,但在XCode中却会出现错误。为了继续在我的计算机科学课上使用Xcode,我需要知道原因。
#include <iostream>
#include <string>
using namespace std;
struct acct { // bank account data
int num; // account number
string name; // owner of account
float balance; // balance in account
};
int main() {
acct account;
cout << "Enter new account data: " << endl;
cout << "Account number: ";
cin >> account.num;
cout << "Account name: ";
cin >> account.name;
cout << "Account balance: ";
cin >> account.balance;
return 0;
}它给出了两个错误,一个说它在account之前(在main被声明之后)期望';‘,第二个account没有为cin >> account.num声明;
发布于 2009-10-23 02:01:08
问题实际上并不在您的代码中:在这种情况下,C要求您在变量前加上struct前缀,而C++则不是。问题实际上是Unix上有一个名为acct的全局函数-正是这个函数让编译器感到困惑。如果您将结构重命名为其他名称,例如bank_account,它的行为将与您预期的一样。
发布于 2009-10-23 01:59:07
如果将main中的"acct account;“更改为"struct acct account;”,它应该会编译。您实际上还没有在代码中声明一个新的类型定义“帐户”,但是Visual C++作为一个非标准扩展为您做了一个很有帮助的声明。XCode更加严格。
另一种修复方法是执行"typedef struct acct { ... } acct;“,这将声明acct结构并创建一个新的typedef。
发布于 2009-10-23 08:36:58
我在尝试使用名为“log”的变量时也遇到过类似的问题。
如果要保留结构名称,请尝试仅指定要使用的元素:
using std::cin;
using std::cout;
using std::endl;https://stackoverflow.com/questions/1608909
复制相似问题