Tôi đang viết mã sẽ gọi hàm C từ Fortran sử dụng cơ chế tương tác C của Fortran (được giới thiệu trong Fortran 2003 và được triển khai trong các phiên bản mới hơn của gfortran và ifort).Mảng chuỗi trong cầu Fortran-C sử dụng iso_c_binding
This answer là gần như những gì tôi cần, nhưng tôi không thể khá được đầu của tôi xung quanh những gì tuyên bố giao diện tôi nên sử dụng trong Fortran cho một hàm C trông như thế này:
int use_array(int n, char * array[]){
int i;
for(i=0; i<n; i++){
printf("Item %d = %s\n",i,array[i]);
}
return n;
}
Tôi không rõ ràng những gì tuyên bố nên được cho giao diện trên đầu Fortran:
interface
function use_array(n, x) bind(C)
use iso_c_binding
integer (c_int) use_array
integer (c_int), value :: n
character(c_char) WHAT_SHOULD_GO_HERE? :: x
end function use_array
end interface
Tôi biết rằng tôi sẽ phải đối phó với vấn đề vô hiệu hóa quá.
Rất cám ơn cho người dùng francescalus cho helpfully chỉnh sửa câu hỏi này để làm cho tôi có vẻ ít lịch sự bằng cách loại bỏ một "cảm ơn" ở phần cuối của nó. Cảm ơn những người dùng tốt như họ đang ở xung quanh để ngăn mọi người đặt câu hỏi không đọc được với lịch sự hàng ngày. – JoeZuntz