Thread overview |
---|
August 24, 2014 std.stdio.tmpfile() return shared(_IO_FILE)* and not File | ||||
---|---|---|---|---|
| ||||
Using DMD 2.066 on GNU/Linux x86_64. This is strange: import std.stdio; void main() { auto f = tmpfile(); pragma(msg, typeof(f)); // shared(_IO_FILE)* } But stdio.d looks like the following: static File tmpfile() @safe What is going on here? |
August 24, 2014 Re: std.stdio.tmpfile() return shared(_IO_FILE)* and not File | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo | On 08/24/2014 07:56 PM, simendsjo wrote:
> Using DMD 2.066 on GNU/Linux x86_64.
>
> This is strange:
>
> import std.stdio;
> void main() {
> auto f = tmpfile();
> pragma(msg, typeof(f)); // shared(_IO_FILE)*
> }
>
> But stdio.d looks like the following:
> static File tmpfile() @safe
>
> What is going on here?
>
Oh, and ldc 0.14 and gdc 4.9.1 has the same result, so it's not a backend thing at least.
|
August 24, 2014 Re: std.stdio.tmpfile() return shared(_IO_FILE)* and not File | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo | On Sunday, 24 August 2014 at 17:55:05 UTC, simendsjo wrote:
> Using DMD 2.066 on GNU/Linux x86_64.
>
> This is strange:
>
> import std.stdio;
> void main() {
> auto f = tmpfile();
> pragma(msg, typeof(f)); // shared(_IO_FILE)*
> }
>
> But stdio.d looks like the following:
> static File tmpfile() @safe
>
> What is going on here?
You're calling `core.stdc.stdio.tmpfile`. There is no `std.stdio.tmpfile`, it's `std.stdio.File.tmpfile`.
|
August 24, 2014 Re: std.stdio.tmpfile() return shared(_IO_FILE)* and not File | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo Attachments: | On Sun, 24 Aug 2014 19:56:24 +0200 simendsjo via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote: > What is going on here? std.stdio does this: 'public import core.stdc.stdio'. and in core.stdc.stdio we can find this: @trusted FILE* tmpfile(); and FILE as an alias for shared(_IO_FILE), declared in 'core.stdc.stdio' too. to get 'File', call 'File.tmpfile()'. |
August 24, 2014 Re: std.stdio.tmpfile() return shared(_IO_FILE)* and not File | ||||
---|---|---|---|---|
| ||||
Posted in reply to anonymous | On 08/24/2014 08:09 PM, anonymous wrote:
> On Sunday, 24 August 2014 at 17:55:05 UTC, simendsjo wrote:
>> Using DMD 2.066 on GNU/Linux x86_64.
>>
>> This is strange:
>>
>> import std.stdio;
>> void main() {
>> auto f = tmpfile();
>> pragma(msg, typeof(f)); // shared(_IO_FILE)*
>> }
>>
>> But stdio.d looks like the following:
>> static File tmpfile() @safe
>>
>> What is going on here?
>
> You're calling `core.stdc.stdio.tmpfile`. There is no `std.stdio.tmpfile`, it's `std.stdio.File.tmpfile`.
Thanks.
So std.stdio.tmpfile() returns shared(_IO_FILE)* and
std.stdio.File.tmpfile() returns File.
Talk about confusing. If I want something from pure C libraries, I would use core.stdc.
|
August 24, 2014 Re: std.stdio.tmpfile() return shared(_IO_FILE)* and not File | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo Attachments: | On Sun, 24 Aug 2014 20:29:14 +0200 simendsjo via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote: > Talk about confusing. If I want something from pure C libraries, I would use core.stdc. dunno why std.stdio does this public import. i see no sense in it, but maybe someone with more expirience knows the answer. |
Copyright © 1999-2021 by the D Language Foundation