这个C头是否写得正确?

时间:2015-10-08 16:47:19

标签: c++ c header shared-libraries static-libraries

我正在学习(尝试)如何编写自己的C / C ++标头,并从我的代码体中获取函数。为此,我写了nyanlib.h和nyan.cpp

忽略它是一个简单的程序,请告诉我标题是否写得正确,或者我是否犯了严重的错误?代码可以工作。

这是nyan.cpp:

#include <iostream>
#include <unistd.h>
#include "nyanlib.h"

using namespace std;
int main()
{
    while( true )
        {
            print_nyan(); //function from nyanlib
            sleep(1);
        }
return 0;   
}

Here is nyanlib.h

另外,nyanlib.h是共享库还是静态库?

2 个答案:

答案 0 :(得分:3)

你有什么作为nyanlib.h应该重命名为nyanlib.cpp。然后nyanlib.h将只包含以下内容:

#ifndef NYANLIB_H
#define NYANLIB_H

void print_nyan();

#endif

然后,您可以将库编译为目标文件:

g++ -c nyanlib.cpp

这给你nyanlib.o。所以现在你的主文件只包含头文件中print_nyan()的原型,所以它知道如何调用它。

然后编译主程序:

g++ -c nyan.cpp
g++ -o nyan nyan.o nyanlib.o

答案 1 :(得分:1)

是和否。虽然它是有效的标头,但您使用它有点奇怪。大多数情况下,标头用作公开与类相关的方法和变量而不执行功能的方法。

对于你的情况,如果你想做它&#34;更好&#34;,我会把print_nyan()函数的实现带到cpp文件中,然后在函数头中保留函数的原型。 / p>

我会说它既不是静态库也不是共享库,因为它有一个主要的。如果你想把它变成一个库,你应该创建一个单独的头文件和源文件来定义print_nyan()函数,将它作为你的库,并在你的main函数中使用该库。