首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么结构在Xcode中不能工作,而在Visual C++中却可以呢?需要帮助!

为什么结构在Xcode中不能工作,而在Visual C++中却可以呢?需要帮助!
EN

Stack Overflow用户
提问于 2009-10-23 01:55:15
回答 3查看 1.3K关注 0票数 3

由于某些原因,这些非常基本的代码在Visual C++中编译时没有错误,但在XCode中却会出现错误。为了继续在我的计算机科学课上使用Xcode,我需要知道原因。

代码语言:javascript
运行
复制
#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声明;

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-23 02:01:08

问题实际上并不在您的代码中:在这种情况下,C要求您在变量前加上struct前缀,而C++则不是。问题实际上是Unix上有一个名为acct的全局函数-正是这个函数让编译器感到困惑。如果您将结构重命名为其他名称,例如bank_account,它的行为将与您预期的一样。

票数 13
EN

Stack Overflow用户

发布于 2009-10-23 01:59:07

如果将main中的"acct account;“更改为"struct acct account;”,它应该会编译。您实际上还没有在代码中声明一个新的类型定义“帐户”,但是Visual C++作为一个非标准扩展为您做了一个很有帮助的声明。XCode更加严格。

另一种修复方法是执行"typedef struct acct { ... } acct;“,这将声明acct结构并创建一个新的typedef。

票数 1
EN

Stack Overflow用户

发布于 2009-10-23 08:36:58

我在尝试使用名为“log”的变量时也遇到过类似的问题。

如果要保留结构名称,请尝试仅指定要使用的元素:

代码语言:javascript
运行
复制
using std::cin;
using std::cout;
using std::endl;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1608909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档