Tôi nhận thấy rằng trình biên dịch là rất cụ thể, nhưng kỳ vọng của tôi là vị trí của trình định danh xa nên có ý nghĩa đối với những người thực sự hiểu các con trỏ.Sử dụng các con trỏ chức năng xa
Vì vậy, tôi có hai ứng dụng chia sẻ toàn bộ không gian bộ nhớ của bộ xử lý.
App A có nhu cầu gọi hàm foo tồn tại trong ứng dụng B.
tôi biết vị trí bộ nhớ của hàm foo.
Vì vậy, điều này sẽ làm việc, trong ứng dụng A:
typedef int (* __far MYFP)(int input);
void somefunc(void)
{
int returnvalue;
MYFP foo;
foo = (MYFP) 0xFFFFFA;
returnvalue = foo(39);
}
- Là __far ở vị trí đúng trong typedef?
- Tôi có cần thêm __far vào tập tin (MYFP) không?
- Một số thông tin cho thấy rằng lệnh gọi tới foo không cần phải bị hủy đăng ký, trải nghiệm của bạn là gì?
Điều gì khác về vấn đề này có vẻ không chính xác hoặc tôi có thể thử thực hiện việc này không?
Có cách nào tốt hơn để thực hiện việc này không?
Edit:
Đây là trên một thiết bị nhúng (Freescale S12XEQ thiết bị) sử dụng Mã Warrior. Đó là một thiết bị 16 bit với không gian bộ nhớ 24 bit, do đó, có, nó được phân đoạn/ngân hàng.
-Adam
Bạn có thể cung cấp thêm thông tin? Bạn đang sử dụng nền tảng nào? Bạn đang sử dụng trình biên dịch nào? – grieve