I think this is because the C preprocessor will interpret SITUATIONALL not as a value but as an expression. That means your C code at that spot will be turned into “(SITUATION1 | SITUATION2 | etc)” and not into the result of that expression directly.
The clang importer could probably figure this out, but I suspect there are diminishing returns in figuring out what really is a constant as opposed to another expression etc. Especially in this example, the inconvenience of defining your own SITUATIONALL in Swift is likely lower than the inconvenience of that where the macro expression imports incorrectly and does unexpected things. Please (anyone) correct me if I’m wrong here though, I’d like to know the definitive answer myself. - Geordie Li Keqing via swift-users <swift-users@swift.org> schrieb am So. 17. Dez. 2017 um 13:08: > Here are some macros in C headers such as > > #define SITUATION1 0x00000001 > #define SITUATION1 0x00000002 > #define SITUATION3 0x00000004 > #define SITUATION4 0x00000008 > #define SITUATIONALL (SITUATION1 | SITUATION2 | SITUATION3 | SITUATION4) > > when use these value in swift > those lines are okay > let value1 = SITUATION1 > let value2 = SITUATION2 > let value3 = SITUATION3 > let value4 = SITUATION4 > but this line would show error > let valueAll = SITUATIONALL > > Is it a bug ? or just be designed as it? > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users