01/10/2018, 16:08
Hỏi về con trỏ hàm?
Mình thử 1 chương trình cho ptr chỉ về con trỏ 1 hàm cộng:
#include <iostream>
using namespace std;
int add(int x, int y)
{
return x + y;
}
int main()
{
int(*ptr)(int, int) = add;
}
Mình chạy thử chương trình thì ptr không cùng giá trị với add, mình không hiểu tại sao???
Bài liên quan
Hi evai55.
Chuyển qua dùng std::function.
Cò 2 cách gián hàm cho con trò hàm:
Mình đã kiểm tra trên Visual Studio:
Thứ nhất:
và
Không khác gì nhau cả, compiler tự động hiểu là mình muốn lấy con trỏ hàm.
Thứ hai:
Trong debug mode, compiler sẽ tạo thêm một hàm số trung gian (chắc để phục vụ debug gì đó) trước khi đến hàm số của bạn, theo code trên thì đại khái compiler nó làm thế này:
Name mangling có ảnh hưởng gì không nhỉ?
Name mangling không ảnh hưởng gì đến vấn đề này nhé.