『壹』 gcc中如何定位文件名和行號的,比如__FILE__和__LINE__的內容存在什麼地方,如何能夠直接獲取。
__FILE__ 和 __LINE__ 這兩個「特定」宏,會被編譯器在 「預處理」 (prepreocessing) 這一步,由編譯器替換成對應的文件名和行號。
用戶自己定義的宏,比如
#define NUMBER 25
也是在這一步進行替換的。
具體,你可以用 gcc -E file.c 來查看,你會發現在這一步,各種宏都會被替換成實際的內容。
『貳』 gcc編譯,出現錯誤:expected 『=』, 『,』, 『;』, 『asm』 or 『__attribute__』 before ........
有時候我們編譯一個大的項目的時候,會出現很多錯誤使得屏幕堆滿了很多無用的信息。一般情況下我們需要找到首次出現錯誤的地方,在gcc中添加編譯選項可以使編譯停止在第一次出現錯誤的地方:
$ gcc -Wfatal-errors foo.c // GCC 4.0 and later$ g++ -Wfatal-errors foo.cpp
$ g++ -fmax-errors=N foo.cpp // 在出現第 N 此錯誤的時候停止編譯,GCC 4.6 and later
『叄』 Linux中gcc無法編譯,顯示 gcc:exe.c:no such file or directory gcc:no input files 求教大神
輸入ls命令截圖看一下?
『肆』 gcc編譯,出現錯誤:expected 『=』, 『,』, 『;』, 『asm』 or 『__attribute__』 before ........
有時候我們編譯一個大的項目的時候,會出現很多錯誤使得屏幕堆滿了很多無用的信息。一般情況下我們需要找到首次出現錯誤的地方,在gcc中添加編譯選項可以使編譯停止在第一次出現錯誤的地方:
$ gcc -Wfatal-errors foo.c // GCC 4.0 and later$ g++ -Wfatal-errors foo.cpp
$ g++ -fmax-errors=N foo.cpp // 在出現第 N 此錯誤的時候停止編譯,GCC 4.6 and later
如果使用cmake構建的項目:
add_definitions( -Wfatal-errors
)
或者SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wfatal-errors") // better1234567
打開警告信息:
$ g++ -Wall foo.cpp //提示警告信息1
警告信息當做錯誤處理:
$ g++ -Werror foo.cpp //將警告信息當做錯誤顯示1
打開測試浮點數相等的警告:
$ g++ -Wfloat-equal foo.cpp //通常測試浮點數相等是不準確的