#include <stdio.h>
#include "chat_multi.h"
#define ab(A) void (*A)()
struct animal {
char name[15];
ab(cry);
};
void a_cry() {
printf("Umm.....\n");
}
void b_cry() {
printf("kkkk,....\n");
}
void check_animal_type(struct animal *animal) {
if (!strcmp(animal->name, "a")) animal->cry = a_cry;
else if (!strcmp(animal->name, "b")) animal->cry = b_cry;
}
void main() {
struct animal animal;
memset(animal.name, 0, sizeof(animal.name));
memcpy(animal.name, "a", 1);
check_animal_type(&animal);
animal.cry();
memset(animal.name, 0, sizeof(animal.name));
memcpy(animal.name, "b", 1);
check_animal_type(&animal);
animal.cry();
}
우선 첫번째줄은 define A B로 B를 A로 대체해도 괜찮다는 의미.
버전 구현은 단순하게 구조체 변경으로 써도 된다.
if (ctx.version == 1) {
ctx.client_entry = client_proc_1_entry;
}
else if (ctx.version == 2) {
ctx.client_entry = client_proc_2_entry;
}
pthread_create(&thread, NULL, NULL, ctx.client_entry);
'개발 > C' 카테고리의 다른 글
[C] inline (0) | 2023.02.23 |
---|---|
[C] 지역변수 전역변수 쓰레드 공유 (0) | 2023.02.09 |
[C] syscall이란 (0) | 2023.01.13 |
[C] pthread_create, pthread_join, pthread_exit, fork (0) | 2023.01.13 |
[C] 포인터란, & * 차이 (0) | 2023.01.10 |