‘壹’ 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 //通常测试浮点数相等是不准确的