Viewing file: ISO_Fortran_binding_15.c (1.01 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* Test the fix for PR92123. */
/* Contributed by Vipul Parekh <parekhvs@gmail.com> */
#include <stdlib.h> #include <stdio.h> #include <ISO_Fortran_binding.h>
// Prototype for Fortran functions extern void Fsub(CFI_cdesc_t *);
int main() { /* Note: ISO C forbids zero-size array 'dim' [-Wpedantic] Therefore, even though 'dat' represents a scalar, it is set rank 1/ */ CFI_CDESC_T(1) dat; int irc = 0;
irc = CFI_establish((CFI_cdesc_t *)&dat, NULL, CFI_attribute_allocatable, CFI_type_int, 0, (CFI_rank_t)0, NULL); if (irc != CFI_SUCCESS) { printf("CFI_establish failed: irc = %d.\n", irc); return EXIT_FAILURE; }
Fsub((CFI_cdesc_t *)&dat); if (*(int *)dat.base_addr != 42) { printf("Fsub returned = %d.\n", *(int *)dat.base_addr); return EXIT_FAILURE; }
irc = CFI_deallocate((CFI_cdesc_t *)&dat); if (irc != CFI_SUCCESS) { printf("CFI_deallocate for dat failed: irc = %d.\n", irc); return EXIT_FAILURE; }
return EXIT_SUCCESS; }
|