我今天在玩flex和野牛,還有一種令人毛骨悚然的事情引起了我的注意。gcc如何知道源代碼的來源?
localhost:c math4tots$ lex c.l
localhost:c math4tots$ yacc -d c.y
localhost:c math4tots$ rm c.l c.y
localhost:c math4tots$ gcc c.c lex.yy.c y.tab.c
c.y: In function ‘opr’:
c.y:120: error: ‘nodeType’ has no member named ‘oper’
我只過去了C.C lex.yy.c中,和y.tab.c的(c.h和y.tab.h也包括在頭),但不知何故,GCC知道c.l和焯賢事實上,即使我刪除了c.l和c.y,gcc也知道c.y中代碼中的錯誤是在哪裏。它是如何做到的?
我覺得我已經看到過一些我過去用過的不同工具的相似之處,但我不能確切地記得它們是什麼。
你應該總是將'-Wall'傳遞給你的GCC編譯器,並且改進你的代碼,直到你沒有更多的警告。 –