欢迎回到Digilent博客!
本周正好是国家图书馆周,虽然Digilent不是图书馆,但我们当然会使用它们!不过,我指的不是公共图书馆(尽管我个人是它们的粉丝);相反,我谈论的是在微控制器中广泛使用的c++库。尽管c++库并不完全等同于知识产权对于fpga来说,它们也有类似的作用。这些库包括一组预定义的函数,它们执行特定的任务,比如通过SPI发送和接收一组数据,用户可以使用这些函数,而不必定义它们的功能。
c++库有两个主要组成部分:源文件和头文件。头文件(一个.h文件)列出了可用的函数以及库中可能需要使用的任何常量;它是我们在主程序中包含的文件,以便我们能够访问库。源文件(通常是.cpp文件)定义了每个函数在代码中的实际作用,其设置风格与用户在主程序中创建自己的函数的方式非常相似。你可以在我们的多路猜游戏学习模块.
通常,用户希望与特定库关联的函数只在他们指定调用时才可访问。否则,您可能有多个库,它们共享一个函数名,比如begin(),它们做的事情略有不同。编译器没有办法告诉你想要使用哪个begin()。为了解决这个问题,c++库每个都有所谓的a类与他们有关。用外行人的话说,一个类有点像一个课外俱乐部——只有当你使用他们俱乐部的成员时,你才能访问图书馆的特定功能。幸运的是,创建库类的成员很容易。为PmodJSTK,当你包含它的库(JSTK.h)时,编译器知道这个库有它自己的类,叫做JSTK。你可以在JSTK类中创建一个名为myjostick的成员,如下所示:
myjostick成员现在可以访问JSTK库中的所有函数,并可以通过在成员后面输入函数名来使用它们:
但是如何真正创建一个库呢?如果你已经知道你想要你的库做什么,这并不难。我们需要在一个程序中输入我们的两个文件notepad++这将允许我们以适当的文件类型保存文件。下面是我创建的一个简单的c++库的截图,该库将数字值3添加到你给出的输入参数中:
现在去创建你自己的库吧……或者去访问库。
