caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Re: [Caml-list] void/unit in C calls
@ 2004-02-20 20:16 Lars Nilsson
  2004-02-20 20:36 ` [Caml-list] " Jed Davis
  0 siblings, 1 reply; 5+ messages in thread
From: Lars Nilsson @ 2004-02-20 20:16 UTC (permalink / raw)
  To: caml-list

>It makes a difference: you should always return Val_unit from
>unit-functions implemented in C. Otherwise you might find obscure
>things like:
>
>   foo () <> ()
>
>Or worse... - somebody reported to me that he sometimes saw programs
>crash, though it isn't certain that this was the cause.

Does this indicate an error in the O'Caml manual, section 18.5.1, where

  void foo(value v1, value v2, value v3)
  {
    CAMLparam3(v1, v2, v3);

    CAMLreturn0;
  }

is used, in addition to a paragraph preceeding it in the same section saying 
"If your C function is a procedure you must insert CAMLreturn0 at the end"? 
In fact, CAMLreturn0 existing at all seems to imply the fact that 
unit-returning functions (from O'Caml's point of view) can be void in the C 
implementation.

Lars

_________________________________________________________________
Say “good-bye” to spam, viruses and pop-ups with MSN Premium -- free trial 
offer! http://click.atdmt.com/AVE/go/onm00200359ave/direct/01/

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 5+ messages in thread
* [Caml-list] void/unit in C calls
@ 2004-02-20 19:26 Michael Furr
  2004-02-20 19:41 ` Shawn Wagner
  2004-02-20 19:50 ` Markus Mottl
  0 siblings, 2 replies; 5+ messages in thread
From: Michael Furr @ 2004-02-20 19:26 UTC (permalink / raw)
  To: caml-list


I realize this is somewhat of a pedantic question but, what is the proper
prototype for a C function which has a parameter of type unit?
ie:
 external foo : unit -> unit = "foo_c"

should foo_c be declared
 void foo_c(void);
or
 value foo_c(value);

Would it ever cause a problem on any architecture if one used the wrong
form?

thanks,
-Mike

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-02-20 20:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-02-20 20:16 [Caml-list] void/unit in C calls Lars Nilsson
2004-02-20 20:36 ` [Caml-list] " Jed Davis
  -- strict thread matches above, loose matches on Subject: below --
2004-02-20 19:26 [Caml-list] " Michael Furr
2004-02-20 19:41 ` Shawn Wagner
2004-02-20 19:50 ` Markus Mottl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).