Void类型函数不打印出struct成员变量

时间:2014-03-09 18:12:08

标签: c++ gcc codeblocks

我正在尝试获取PrintInformation(Employee sEmployee)中声明并在employ.h中定义的函数employ.cpp,以打印出它收到的Employee结构变量的每个字段作为参数,但它没有出现在控制台上。程序中的每个其他cout语句都可以正常工作,当我在main.cpp中获得所有声明和定义时,我不记得有任何问题。我在Mac OSX 10.6.8上使用CodeBlocks,我的编译器是GNU GCC。以下是所有文件:

employ.h

#ifndef EMPLOY_H
#define EMPLOY_H

struct Employee
{
    int nID;
    int nAge;
    float fWage;
};

void PrintInformation(Employee sEmployee);

#endif // EMPLOY_H


employ.cpp

#include <iostream>
#include "employ.h"

void PrintInformation(Employee sEmployee)
{
    using namespace std;
    cout << "ID:   " << sEmployee.nID << endl;
    cout << "Age:  " << sEmployee.nAge << endl;
    cout << "Wage: " << sEmployee.fWage << endl << endl;
}


的main.cpp

#include <iostream>
#include "employ.h"

int main()
{
    using namespace std;
    cout << "The size of Employee is " << sizeof(Employee) << endl;

    Employee sJoe;
    sJoe.nID = 14;
    sJoe.nAge = 32;
    sJoe.fWage = 24.15;

    Employee sFrank;
    sFrank.nID = 15;
    sFrank.nAge = 28;
    sFrank.fWage = 18.27;

    // Frank got a promotion
    sFrank.fWage += 2.50;

    //Today is Joe's birthday
    sJoe.nAge ++;

    void PrintInformation(Employee sJoe);
    void PrintInformation(Employee sFrank);


    if (sJoe.fWage > sFrank.fWage)
        cout << "Joe makes more than Frank" << endl;
    return 0;
}

提前致谢!


编辑:

我忘了指定我之前尝试使用语句PrintInformation(Employee sJoe)调用该函数并从编译器获得此消息:

error: expected primary-expression before 'sJoe'

2 个答案:

答案 0 :(得分:1)

你没有调用这个函数,你是在声明它。两次。

你想要

PrintInformation(sJoe);
PrintInformation(sFrank);

答案 1 :(得分:0)

void PrintInformation(Employee sJoe);
void PrintInformation(Employee sFrank);

这些是声明,而不是函数调用。可以根据需要多次声明函数。您可以在其他函数中声明函数(但不能定义它们)。参数的名称是可选的,对函数的签名没有影响,onyl类型很重要。这就是为什么你可以在每个声明中以不同的名称命名,编译器不会抱怨。只有在您通常希望实际使用参数的函数定义时才需要它。

你需要:

PrintInformation(sJoe);
PrintInformation(sFrank);