这个Cheader写的对吗?

Is this C header written properly?

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

忽略它是一个微不足道的程序,请告诉我 header 是否写对了,或者我是否犯了严重的错误?虽然代码有效。

这里是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 是共享库还是静态库?

您拥有的 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

是也不是。虽然它是 valid header,但您使用起来有点奇怪。大多数时候,header 用作公开与 class 相关的方法和变量的方式,而不是执行功能。

对于你的情况,如果你想实现 "better",我会把 print_nyan() 函数的实现放到 cpp 文件中,并且只在header.

而且我会说它既不是静态库也不是共享库,因为它有一个 main.如果你想让它成为一个库,你应该制作一个单独的 header 和定义 print_nyan() 函数的源文件,将其作为你的库,并在你的主函数中使用该库。