My code works, I don’t know why.

國王的耳朵是驢耳朵

DRY: 測試檔案Template

| Comments

本頁存在的目的單純是提供其他網頁參考同樣的測試程式使用,不知道算不算是一種metadata?

DRY: Don’t Repeat Your Self,字面上的解釋就是不要一直做重複的事。

由於前面一系列的文章都會用到同樣的測試程式碼,每次都要剪下貼上。加上之後打算整理的資料還是會用到這些測試程式,因此將它們獨立出來。

最原始的出處:Makefile header file dependency問題。這些測試程式的主體是liba.c和libb.c兩個檔案。liba.c提供兩個API

  • from_liba()
    • 印出呼叫的訊息
  • test_liba()
    • 呼叫lib.c中的from_libb()

libb.c的API只是把上面的API中的liba改成libb而已。

liba.h

liba.h
1
2
3
4
5
#ifndef LIBA_H_2013
#define LIBA_H_2013
void test_liba(void);
void from_liba(void);
#endif

liba.c

liba.c
1
2
3
4
5
6
7
8
9
10
11
12
#include "libb.h"
#include <stdio.h>

void test_liba(void)
{
    from_libb();
}

void from_liba()
{
    printf("%s\n", __PRETTY_FUNCTION__);
}

libb.h

libb.h
1
2
3
4
5
#ifndef LIBB_H_2013
#define LIBB_H_2013
void test_libb(void);
void from_libb(void);
#endif

libb.c

libb.c
1
2
3
4
5
6
7
8
9
10
11
12
#include "liba.h"
#include <stdio.h>

void test_libb(void)
{
    from_liba();
}

void from_libb()
{
    printf("%s\n", __PRETTY_FUNCTION__);
}

test.c

test.c
1
2
3
4
5
6
7
8
9
10
#include "libb.h"
#include "liba.h"
#include <stdlib.h>
int main(void)
{
    test_liba();
    test_libb();

    return 0;
}

Comments