这个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;
}
此外,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() 函数的源文件,将其作为你的库,并在你的主函数中使用该库。
我正在学习(尝试)如何编写自己的 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;
}
此外,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() 函数的源文件,将其作为你的库,并在你的主函数中使用该库。