Có một hàm API tồn tại mà không chỉ cho phép các plugin (DLL) để nhận ba tham số và thực hiện một số hành động:Cách sửa đổi nội dung của biến ban đầu được chuyển bằng giá trị?
int ProcessMe(int nCommand, unsigned int wParam, long lParam);
Bây giờ, từ chương trình chính (exe), muốn vượt qua hai biến để các plugin, và yêu cầu plugin để sửa đổi nội dung của họ, và chương trình chính sẽ đọc chúng một lần nữa, để thực hiện một số nhiệm vụ.
Câu hỏi của tôi là, từ hàm trên, tôi có thể thực hiện việc này mà không thay đổi các tham số chức năng không?
Ví dụ:
int ProcessMe(int nCommand, unsigned int wParam, long lParam)
{
// modify the parameters//
return 0;
}
int main()
{
BOOL bSave = TRUE;
int nOption = 0;
ProcessMe(0, (unsigned int)(&bSave), (long)(&nOption));
if(FALSE==bSave)
printf("bSave is modified!");
return 1;
}
Không. Bạn cần phải vượt qua tham chiếu mà bạn không thể thực hiện mà không thay đổi API. Bạn sẽ phải thực hiện lại giao diện bằng con trỏ, hoặc học cách sống mà không có. – tbert
Đáng buồn là tôi không được phép thay đổi giao diện vì hiện tại có nhiều DLL khác đang chạy với exe sử dụng giao diện tương tự .... mối quan tâm tương thích ngược cho tôi: ( – wengseng
Điều này không có ý nghĩa. Bạn có thể khai báo một hàm mới –