- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
// macro.h
#undef IF_NOT_HEADER
#undef IF_HEADER
#undef FUNC_BODY
#ifndef IS_HEADER
#define IF_NOT_HEADER(...) __VA_ARGS__
#define IF_HEADER(...)
#define FUNC_BODY(...) {__VA_ARGS__}
#else
#define IF_NOT_HEADER(...)
#define IF_HEADER(...) __VA_ARGS__
#define FUNC_BODY(...) ;
#endif
// src.c
#include "macro.h"
IF_HEADER(extern) int var IF_NOT_HEADER(= 42);
IF_HEADER(extern) int f(int x) FUNC_BODY(return var;)
// header.h
#ifndef IS_HEADER
#define IS_HEADER
#include "src.c"
#undef IS_HEADER
#else
#include "src.c"
#endif
Комментарии (1) RSS
Добавить комментарий