提取跨多行的函數聲明的辦法

問題描述

最近學習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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章