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