Deutsch   English   Français   Italiano  
<vl6mjm$3f5mv$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: "Steven G. Kargl" <sgk@REMOVEtroutmask.apl.washington.edu>
Newsgroups: comp.lang.fortran
Subject: Re: how do you send a fortran character string from GCC to GFortran ?
Date: Thu, 2 Jan 2025 18:40:54 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 42
Message-ID: <vl6mjm$3f5mv$1@dont-email.me>
References: <vl5ima$38li7$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 02 Jan 2025 19:40:55 +0100 (CET)
Injection-Info: dont-email.me; posting-host="1a073e7261bd438a48741e890d6ebe3e";
	logging-data="3643103"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+3MkJGZKxAvezethBftUvL"
User-Agent: Pan/0.145 (Duplicitous mercenary valetism; d7e168a
 git.gnome.org/pan2)
Cancel-Lock: sha1:b+0M6q4dMde8S+Y5UdovXg0FOIo=
Bytes: 2048

On Thu, 02 Jan 2025 02:27:54 -0600, Lynn McGuire wrote:

> How do you send a fortran character string from GCC to GFortran ?
> 
> I cannot get this to link.  I can do the reverse, send a fortran 
> character string from Gfortran to GCC.
> 
> I do have the additional complication that I do not know the length of 
> the fortran character string being sent from GCC to Gfortran at compile 
> time, only run time.  So that is a character*(*) string.
> 
> I am not using the ISO C binding.

As Thomas as indicated, ISO C binding was introduced into the
Fortran standard to address your needs.  But, if you want to
go old school with gcc/gfortran, then 

% cat aa.c
#include <string.h>

void
string_(char *s, int *slen)
{
   strncpy(s, "abc", *slen);
}

% cat bb.f90
program foo
   external :: string
   character(len=10) str
   call string(str, len(str))
   print *, '>>' // str //'<<'
end program foo

% ~/work/bin/gcc -c aa.c
% gfcx -o z bb.f90 aa.o
% ./z
 >>abc<<

-- 
steve