# Trailing semicolons: git grep '^#define.*;$' git grep '^} while (0);' # Define block (instead of do-while) git grep '^#define.*)\s*{\s*\\\?$' git grep -A 1 '^#define' | grep -B 1 -- '-\s*{\s*\\$' # Unused macros: for d in $(git grep "^#define\s*[A-Za-z_]*(" | sed 's/.*:#define\s*//' | sed 's/(.*//'); do n=$(git grep -w "$d" | wc -l); if [ $n -le 1 ]; then echo $d; fi; done | git grep -w -f - > /tmp/unused-macros.txt