码迷,mamicode.com
首页 > 其他好文 > 详细

问题集--理解编译原理

时间:2016-11-28 01:08:10      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:宏定义   std   程序   原理   set   div   编译原理   链接   str   

想把类从主函数文件中分离出来:

编译时出现了undefied refenence to...问题,代码如下:

//main.cpp

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

int main(int argc, char **argv)
{
    Student s1;
    s1.setNum(100);
    s1.display();
    return 0;
}


//student.h

#ifndef STUDENT_H
#define STUDENT_H

class Student
{
private:
    int num;
public:
    void setNum(int n);
    void display();
};
#endif

//student.cpp

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

void Student::setNum(int n)
{
    num = n;
}
void Student::display()
{
    std::cout << num << std::endl;
}

 

编译时出现以下错误:

 技术分享

如果将student.cpp中的函数放到类中,则不会出错!

//student.h

#ifndef STUDENT_H
#define STUDENT_H
class Student
{
    private:
    int num;
    public:
    void setNum(int n)
    {
        num = n;
    };
    void display()
    {
        std::cout << num << std::endl;
    };

};

#endif

A:student.cpp要添加到当前项目里,和main.cpp一起编译成功以后,才能链接在一起生成目标程序

由于编译时#include宏定义的头文件会全部被替换为源代码进行编译。如果将类代码全部放在.h文件中,由于main.cpp包含student.h头文件,在编译时会将.h头文件替换,再对main.cpp文件进行编译,这样不会出现编译错误!

问题集--理解编译原理

标签:宏定义   std   程序   原理   set   div   编译原理   链接   str   

原文地址:http://www.cnblogs.com/always-chang/p/6107488.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!