小编All*_*len的帖子

这种接口的技术术语是什么?

我使用嵌入式软件,遇到了(以及从这个模型中复制过的)我在大学时从未学过的界面(新毕业).它允许代码库在library function不知道library用它编译的内容的情况下进行调用,假设它们都具有相同的内容function.下面的例子只显示了一个radio1,但是假设有一个radio2,radio3等通过makefile.

在编译中,library我们执行以下操作.在.c源文件中,function声明和接口struct:

// function bodies that do things
void radio1_init_radio(void) {}
void radio1_calibrate_radio(void) {} 

// populate global tune interface
const struct tune_if_t tune_if =
{
    .init_radio        = radio1_init_radio,
    .calibrate_radio   = radio1_calibrate_radio
}
Run Code Online (Sandbox Code Playgroud)

然后,在.h中我指定function pointers:

struct tune_if_t
{
    void (*init_radio)      (void);
    void (*calibrate_radio) (void);
};

extern const struct tune_if_t tune_if;
Run Code Online (Sandbox Code Playgroud)

这允许库外的系统在function不知道编译和链接哪个无线电库的情况下调用:

int main( void )
{
    // interface calls
    tune_if.init_radio();
    tune_if.calibrate_radio();

    return …
Run Code Online (Sandbox Code Playgroud)

c interface

3
推荐指数
1
解决办法
99
查看次数

在 makefile 中调用 bash 命令

在 a 中makefile,我试图检查 fileA 的修改时间是否比 fileB 更新的时间长。使用之前的一些帖子(thisthis)作为参考,我想出了这个来尝试将自上次文件修改以来的时间存储为变量:

(我宁愿这是在make配方之外的函数中,但一次一个。)

    .PHONY: all clean

    all      : (stuff happens here)

    radio    :
              BASE_MOD_TIME="$( expr $(date +%s) - $(date +%s -r src/radio_interface/profile_init.c) )"
              @echo "$(BASE_MOD_TIME)"
Run Code Online (Sandbox Code Playgroud)

我以为我会将expr命令的输出分配给一个变量BASE_MOD_TIME,但输出是:

    bash-4.1$
    BASE_MOD_TIME=""
    echo ""
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?保存输出的简单尝试ls -l也没有像这样工作。

bash makefile

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

bash ×1

c ×1

interface ×1

makefile ×1