[Issue 12892] New: extern(C): label confined to version scope
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Wed Jun 11 13:02:22 PDT 2014
https://issues.dlang.org/show_bug.cgi?id=12892
Issue ID: 12892
Summary: extern(C): label confined to version scope
Product: D
Version: D2
Hardware: x86_64
OS: Windows
Status: NEW
Severity: normal
Priority: P1
Component: DMD
Assignee: nobody at puremagic.com
Reporter: markisaa at umich.edu
If I write:
version(Win32) {
extern(Windows):
} else {
extern(C):
}
Then the functions below this version block are unaffected. In particular, the
extern does not apply to anything after the close curly. This also happens if I
remove the curly braces from that code. If I just do:
extern(C):
without any version block, everything works fine. Similarly, if I do:
version(Win32) {
enum isWin32 = true;
} else {
enum isWin32 = false;
}
static if (isWin32) {
extern(Windows):
} else {
extern(C):
}
Then it also does *not* work as expected. The extern label does not go beyond
the close curly.
If I remove the curly braces from the static if part of that, I get:
$ dmd cversion.d cversion.def odbcinst.d sqlucode.d sqlext.d sql.d sqltypes.d
-m64 -shared
cversion.d(44): Error: Declaration expected, not 'else'
cversion.d(59): Error: Declaration expected, not 'if'
cversion.d(67): Error: Declaration expected, not 'if'
cversion.d(73): Error: no identifier for declarator szConnStrOut[cbConnStrOut -
1]
cversion.d(73): Error: Declaration expected, not '='
cversion.d(74): Error: unrecognized declaration
--
More information about the Digitalmars-d-bugs
mailing list