C言語でどのようにインターフェース機能を実装するか
C言語は手続き型言語で、インターフェース機能が内蔵されていません。しかし、関数ポインタや構造体、コールバック関数などのテクニックを使用して、同様のインターフェース機能を実現できます。
- ファンクションポインタ使用:ファンクションポインタの型を定義し、具体的な関数をファンクションポインタに代入し、ファンクションポインタを呼び出してインターフェースの機能を実現できます。
typedef void (*InterfaceFunc)();
InterfaceFunc interface;
void Func1() {
printf("Func1\n");
}
void Func2() {
printf("Func2\n");
}
int main() {
interface = Func1;
interface(); // 调用Func1
interface = Func2;
interface(); // 调用Func2
return 0;
}
- 構造体とコールバック関数が使える:
typedef struct {
void (*interfaceFunc)();
} Interface;
void Func1() {
printf("Func1\n");
}
void Func2() {
printf("Func2\n");
}
int main() {
Interface interface1;
interface1.interfaceFunc = Func1;
interface1.interfaceFunc(); // 调用Func1
Interface interface2;
interface2.interfaceFunc = Func2;
interface2.interfaceFunc(); // 调用Func2
return 0;
}
こうすることで、関数ポインタや構造体、コールバック関数を用いて、インタフェースの機能を実現できます。