__FILE__, __LINE__ 是ANSI C语言标准,各种C编译器都应当支持。而 __FUNCTION__ 是C99标准,故一些老的编译器就不支持。如gcc支持__FUNCTION__,而vc6就不支持。

重申一遍,这些宏是编译器内置宏,无法定义,也不需要定义,就如c语言关键字一样。

经测试:
1,cygwin 1.7.9-1 gcc-g++ 3.4.4-999测试3者都支持。
2,VS2002(VC7)3者都支持。

测试代码
#include <iostream>
using namespace std;
 
int main()
{
    cout<<__FILE__<<" "<<__LINE__<<" "<<__FUNCTION__<<endl;
    return 0;
}
posted on 2022-08-07 15:58  闻缺陷则喜何志丹  阅读(2)  评论(0编辑  收藏  举报  来源