added c pragma, macro comma protection, improved c++ template info