#include <iostream.h>inline void p();
void main()
{
p();
}void p()
{
cout << "xxxxxxxxxx" << endl;
}

解决方案 »

  1.   

    如果在类中,inline放到方法声明中好?还是放到方法实现中好?
      

  2.   

    呵呵,楼主的又一0分贴。
    我先说答案吧,不管是全局函数还是类的成员函数(即方法),都只能在函数声明时用inline。原因看下面的例子:
    现有一程序,包括如下三个文件:
    //MyC.cpp文件内容
    #include <iostream.h>
    #include "book.h"int add(int a,int b);void main()
    {
    cout<<add(24,76)<<endl;
    book a;
    a.show();
    }//book.h文件内容
    class book
    {
    public:
    void show();
    };//book.cpp文件内容
    #include <stdio.h>
    #include "book.h"int add(int a,int b)
    {
    return (a+b);
    }void book::show()
    {
    printf("show me this message!");
    }你试着把inline加在函数声明时都无问题,但若加在实现中时编译器都会出现类似如下错误:
    Compiling...
    book.cpp
    Linking...
    MyC.obj : error LNK2001: unresolved external symbol "public: void __thiscall book::show(void)" (?show@book@@QAEXXZ)
    Debug/MyC.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
    Creating browse info file...MyC.exe - 2 error(s), 0 warning(s)
      

  3.   

    另外补充一下:
    inline函数不能extern的,但如果声明和实现代码在同一文件中,则inline随便写在那儿都行。不过一般被inline的函数都是用来实现比较简单的功能,故通常都是声明时加上实现代码的,如:
    inline int add(int a,int b){return (a+b);}
    这样,系统执行函数时效率会高一些,但把功能复杂的函数inline的话,只会适得其反,所以这里分开写也只是举个例子。
    To Featured(我握着爱情的门票静静排队……) ( ):
    我也是一个菜鸟,当我第一来CSDN的时候,感觉就象来到天堂,渴望把困扰已久的问题一古脑儿都倒出来,然后等待答案的心情激动又焦急,不停地刷屏看(很好笑吧,现在回头想想自己也觉得好笑),久久不见有人回贴答复心情就变成抓狂了,同时还有深深的失望......初学者的心情应该在致如此吧,如果通过我的努力可以让一个人少一份失望,少一份焦虑的话,我也会很欣慰的,所以这里的问题贴,不管有分没分,只要我有能力都会尽力回答的,并保证回复内容的准确性(一般都会自己上机试试),只因为我也曾经这样走过......
      

  4.   

    申明和实现在一起,就自动变成inline
    如果分开,就在实现时加上inline
      

  5.   

    TO Snow_Ice11111(雪上加冰) :
    好几天沒來這里了,再次感謝,因為我也曾得到過你的幫助!
    TO EVERYONE:
    上位這位仁兄說得非常好,的確很多新人都有這樣的心情,因為每個人都是從那過來的。所以真心希望來這里的每一個人都能像SNOW_ICE11111一樣!
    TO 樓主:
    SNOW_ICE11111已經將你的問題回答得非常好了,相信你看了之后一定會對INLINE函數有了一個新的理解。