我正在学习(尝试)如何编写自己的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;
}
另外,nyanlib.h是共享库还是静态库?
答案 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函数中使用该库。