digitalmars.D.learn - pragma mangle on extern(C) in function body
- Sebastiaan Koppe (12/12) Jan 16 2019 While it is perfectly ok to define an extern(C) function in a
- Sebastiaan Koppe (6/18) Jan 16 2019 See also:
- Steven Schveighoffer (9/23) Jan 16 2019 I found the same error, not too long ago.
- Sebastiaan Koppe (15/18) Jan 16 2019 The workaround is quite silly. Seems like a parser issue.
While it is perfectly ok to define an extern(C) function in a
function method, I can't seem to get pragma(mangle, "...") on it
to work.
---
pragma(mangle, "Foo") // Ok
extern(C) void foo();
void main() {
pragma(mangle, "Bar") // Error....
extern(C) void bar();
}
---
Any idea why?
Jan 16 2019
On Wednesday, 16 January 2019 at 19:41:04 UTC, Sebastiaan Koppe
wrote:
While it is perfectly ok to define an extern(C) function in a
function method, I can't seem to get pragma(mangle, "...") on
it to work.
---
pragma(mangle, "Foo") // Ok
extern(C) void foo();
void main() {
pragma(mangle, "Bar") // Error....
extern(C) void bar();
}
---
Any idea why?
See also:
https://issues.dlang.org/show_bug.cgi?id=15843
https://issues.dlang.org/show_bug.cgi?id=17638
https://issues.dlang.org/show_bug.cgi?id=19149
Jan 16 2019
On 1/16/19 2:41 PM, Sebastiaan Koppe wrote:
While it is perfectly ok to define an extern(C) function in a function
method, I can't seem to get pragma(mangle, "...") on it to work.
---
pragma(mangle, "Foo") // Ok
extern(C) void foo();
void main() {
pragma(mangle, "Bar") // Error....
extern(C) void bar();
}
---
Any idea why?
I found the same error, not too long ago.
I would note also, the error is not very good:
Error: unrecognized pragma(mangle)
Which is the same error you get if you put any unknown pragma identifier
in there.
I'm guessing it's a missed case in the compiler, and not intentionally
omitted.
-Steve
Jan 16 2019
On Wednesday, 16 January 2019 at 19:59:02 UTC, Steven Schveighoffer wrote:I'm guessing it's a missed case in the compiler, and not intentionally omitted. -SteveThe workaround is quite silly. Seems like a parser issue. --- pragma(mangle, "Foo") extern(C) void foo(); mixin template T() { pragma(mangle, "Bar") extern(C) void bar(); } void main() { mixin T!(); // Hurrah! } ---
Jan 16 2019









Sebastiaan Koppe <mail skoppe.eu> 