Trong ngôn ngữ C, __FUNCTION__
có thể được sử dụng để nhận tên hiện tại của hàm. Nhưng nếu tôi định nghĩa một hàm có tên a() và nó được gọi trong b(), như dưới đây:Làm thế nào chúng ta có thể biết tên của hàm người gọi?
b()
{
a();
}
Bây giờ, trong mã nguồn, có rất nhiều chức năng như b() mà gọi một (), ví dụ c(), d(), e() ...
Có thể, trong một(), để thêm một số mã để phát hiện tên của hàm được gọi là() không?
Hơn nữa:
- Xin lỗi vì lỗi đánh máy sai lệch. Tôi đã sửa chữa nó.
- Tôi đang cố gắng tìm ra hàm nào gọi a() cho mục đích gỡ lỗi. Tôi không biết bạn làm thế nào khi ở trong cùng một tình huống?
- Và mã của tôi là dưới vxWorks, nhưng tôi không chắc chắn rằng nó có liên quan đến C99 hoặc điều gì đó khác.
Không chắc. Nhưng [this] (http://stackoverflow.com/questions/2154852/get-a-pointer-to-the-current-function-in-c-gcc) có thể hữu ích cho bạn –
Tại sao bạn muốn làm điều này? Là nó cho mục đích gỡ lỗi? – fstamour
Nếu điều này chỉ để gỡ lỗi, bạn có thể xác định một macro, theo cách đó bằng cách sử dụng '__func__' sẽ trả về b, như bạn muốn. – Joe