问题描述
最近学习SDL2,想把库头文件中的C语言导出函数声明都输出到一个单独的Markdown格式的文件中。
SDL2的导出函数通常包含“DECLSPEC”字符串并以“;“结尾,例如:
extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);
但是有些导出函数声明会跨多行,例如:
extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
const char *value,
SDL_HintPriority priority);
解决方法
在Windows平台上使用GnuWin32的grep、xargs和gawk命令:
cd /d D:\prj\SDL2-2.0.7\include
del out.md 2>nul & grep -l DECLSPEC SDL*.h | xargs -iXX gawk "BEGIN { print \"### \" ARGV[1] } /DECLSPEC/,/;/ { print \"\t\" $0 }" XX >> out.md
参考
gawk in Gawk package
grep in Grep package
xargs in FindUtils package