Thinking about this a bit more: Imagine you imported another header later that “#undef SITUATION2” and then redefined it with a different value. The fact that SITUATIONALL is an expression and not a value would then produce a different result. For some this would be expected and for others a debugging nightmare. Since there is no “right” answer, I’d say macro expressions like this will never be imported by Swift.
- Geordie Geordie Jay via swift-users <swift-users@swift.org> schrieb am So. 17. Dez. 2017 um 14:40: > 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 >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users