問題描述
最近學習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