首页 / 软件开发 / C++ / 解析C++/CLI之头文件、内联函数与数组
解析C++/CLI之头文件、内联函数与数组2007-10-08 天极 谢启东头文件与函数声明在传统的设计与实现中,你可对需建模的每种类型进行定义,并把定义放在各自的头文件中;而头文件中,一般会包含类型名、成员名、及相关小型成员函数的内联定义。与各个单独编译的源文件是通过头文件来共享信息不同,在C++/CLI中,这些信息是通过程序集来共享的。就拿常举例的Point类来说,它单独编译,并生成了一个名为"Point.dll"的程序集。任何需要某种类型定义的应用程序,都必须编译和链接带有此类型的程序集,这同时也要求此DLL形式的程序集中有完整的类型定义;同样,在类型中所有声明的函数也必须被定义,否则,链接器将会报告错误。举例来说,你可以在Point类中声明成员函数GetHashCode,并在类外定义它,但必须在同一源文件中(见例1)。但是,若把此成员函数的定义放在一个单独的源文件中却不行,即便源文件是作为同一程序集的输入、与Point.cpp同时编译也不行,因为编译这样一个文件需要访问程序集Point.dll,而这正好是此编译过程要生成的程序集。(此处假定在函数定义时未使用inline,这将在后面讨论。)例1:public ref class Point
{
...
virtual int GetHashCode() override;
};
int Point::GetHashCode() override
{
return X ^ (Y << 1);
}
在编译及链接任何程序集时,都隐含不使用头文件,且程序集所依赖的所有其他程序集都必须是已编译及链接过的。内联函数在Point中,每个成员函数的定义都有意写成了inline(内联),除了增加定义的灵活性外,还可把代码保持在同一源文件中,使成员函数不能在类型定义本身之外的另一文件中被定义。