显示当前行号、文件名和函数名(二)
?為了測試__FILE__, __LINE__, __FUNCTION__, 又寫了一個C++版本的測試程序,源碼如下:
#include <iostream> #include <string>using namespace std;class CUser { private:int m_nId;string m_sName;public:CUser(int id, string name);~CUser();void display(); };CUser::CUser(int id, string name) {m_nId = id;m_sName = name; }CUser::~CUser() {cout<<"Bye-bye, "<<m_nId<<endl; }void CUser::display() {cout<<"File: "<<__FILE__<<", Line: "<<__LINE__<<", Function: "<<__FUNCTION__<<endl;cout<<"id: "<<m_nId<<", name: "<<m_sName<<endl; }int main() {CUser a(1, "Joe Black");CUser b(2, "Miss Right");a.display();b.display();return 0; }?
經過測試:
1. 上面的代碼在vc6中編譯出錯,提示為:error C2065: '__FUNCTION__' : undeclared identifier
2. 上面的代碼在vc2010中測試成功,運行結果為:
File: e:\program\vc2010\delme\delme\t.cpp, Line: 32, Function:CUser::display
id: 1, name: Joe Black
File: e:\program\vc2010\delme\delme\t.cpp, Line: 32, Function: CUser::display
id: 2, name: Miss Right
Bye-bye, 2
Bye-bye, 1
請按任意鍵繼續. . .
3. 上面的代碼在Fedora下測試也成功了,運行結果為:
File: t.cpp, Line: 32, Function:display
id: 1, name: Joe Black
File: t.cpp, Line: 32, Function: display
id: 2, name: Miss Right
Bye-bye, 2
Bye-bye, 1
?
注意到結果中的區別了嗎?
1) 在VC2010中,__FILE__會把當前文件的全路徑都輸出來;但是在linux下,只是輸出了文件名,不包含路徑;
2) 在vc2010中,__FUNCTION__會把類名和函數名都輸出來;但是在linux下,只是輸出函數名,卻不會輸出類名。?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的显示当前行号、文件名和函数名(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于java+SpringBoot+HT
- 下一篇: HAProxy的日志配置以及ACL规则实