[Bug fortran/32732] [Bind C] Character scalars are passed as arrays

Angelo Graziosi Angelo.Graziosi@roma1.infn.it
Thu Jul 26 09:39:00 GMT 2007


I have tried to build the fortran test with gfc-20070722 on GNU/Linux
kubuntu Dapper 6.06 (32 bit), but:

==============================================================
$ gfc test_bug_fortran_32732.F95 -o test_bug_fortran_32732.gfc
test_bug_fortran_32732.F95:4.23:

  call printf("c_bool", sizeof(.true._c_bool), c_bool);
                      1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:5.23:

  call printf("c_char", sizeof(c_char_'a'), c_char);
                      1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:7.30:

  call printf("c_signed_char", sizeof(0_c_signed_char), c_signed_char);
                             1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:8.22:

  call printf("short",  sizeof(0_c_short), c_short);
                     1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:9.20:

  call printf("int",    sizeof(0_c_int), c_int);
                   1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:10.21:

  call printf("long",   sizeof(0_c_long), c_long);
                    1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:11.26:

  call printf("long long", sizeof(0_c_long_long), c_long_long);
                         1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:12.23:

  call printf("size_t", sizeof(0_c_size_t), c_size_t);
                      1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:13.25:

  call printf("intptr_t", sizeof(0_c_intptr_t), c_intptr_t);
                        1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:15.22:

  call printf("float", sizeof(0.0_c_float), c_float);
                     1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:16.23:

  call printf("double", sizeof(0.0_c_double), c_double);
                      1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:17.28:

  call printf("long double", sizeof(0.0_c_long_double), c_long_double);
                           1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:18.30:

  call printf("complex float", sizeof(cmplx(0.0, c_float_complex)),
c_float_com
                             1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:19.31:

  call printf("complex double", sizeof(cmplx(0.0, c_double_complex)),
c_double_
                              1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:20.36:

  call printf("complex long double", sizeof(cmplx(0.0,
c_long_double_complex)),
                                   1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:22.23:

  call printf("int8_t",   sizeof(0_c_int8_t), c_int8_t);
                      1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:23.24:

  call printf("int16_t",  sizeof(0_c_int16_t), c_int16_t);
                       1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:24.24:

  call printf("int32_t",  sizeof(0_c_int32_t), c_int32_t);
                       1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:25.24:

  call printf("int64_t",  sizeof(0_c_int64_t), c_int64_t);
                       1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:27.29:

  call printf("int_least8_t",   sizeof(0_c_int_least8_t), c_int_least8_t);
                            1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:28.30:

  call printf("int_least16_t",  sizeof(0_c_int_least16_t),
c_int_least16_t);
                             1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:29.30:

  call printf("int_least32_t",  sizeof(0_c_int_least32_t),
c_int_least32_t);
                             1
Error: Type/rank mismatch in argument 'size' at (1)
test_bug_fortran_32732.F95:30.30:

  call printf("int_least64_t",  sizeof(0_c_int_least64_t),
c_int_least64_t);
                             1
Error: Type/rank mismatch in argument 'size' at (1)
==============================================================


Cheers,

   Angelo.



More information about the Fortran mailing list