Computer >> Máy Tính >  >> Lập trình >> C ++

__FILE__, __LINE__ và __FUNCTION__ trong C ++ là gì

Ở đây chúng ta sẽ xem __FILE, __LINE__ và __FUNCTION__ trong C ++ là gì.

__FILE__

Macro này được sử dụng để lấy đường dẫn của tệp hiện tại. Điều này rất hữu ích khi chúng ta muốn tạo các tệp nhật ký. Đoạn mã sau sẽ giải thích chức năng của nó.

Ví dụ

#include<iostream>
using namespace std;
int errorLog (const char* file, const std::string& msg){
   cerr << "[" << file << "] " << msg << endl;
}
#define LOG( msg ) errorLog( __FILE__, msg )
main() {
   LOG("This is a dummy error");
}

Đầu ra

[D:\Misc C and C++ Questions\test_prog.cpp] This is a dummy error

__LINE__

Macro này có thể tìm thấy số dòng hiện tại trong tệp nguồn. Số dòng này là một giá trị số nguyên. Khi các câu lệnh nhật ký được tạo thì __LINE__ đóng một số vai trò hữu ích. Xem ví dụ sau để hiểu rõ.>

Ví dụ

#include<iostream>
using namespace std;
int errorLog (int line, const std::string& msg){
   cerr << "[" << line << "] " << msg << endl;
}
#define LOG( msg ) errorLog( __LINE__, msg )
main() {
   LOG("This is a dummy error");
}

Đầu ra

[12] This is a dummy error

__FUNCTION__

Macro này có thể trả về chức năng hiện tại. Khi các câu lệnh nhật ký được tạo thì __FUNCTION__ đóng một số vai trò hữu ích. Xem ví dụ sau để hiểu rõ.

long double rintl(long double argument)

Ví dụ

#include<iostream>
using namespace std;
int errorLog (const char* func, const std::string& msg){
   cerr << "[" << func << "] " << msg << endl;
}
#define LOG( msg ) errorLog( __FUNCTION__, msg )
void TestFunction(){
   LOG("Send from Function");
}
main() {
   TestFunction();
   LOG("This is a dummy error");
}

Đầu ra

[TestFunction] Send from Function
[main] This is a dummy error