Почему Clang добавляет суффиксы подчеркивания к именам параметров Objective-C в автоматически сгенерированных заголовкахC++

Программы на C++. Форум разработчиков
Anonymous
Почему Clang добавляет суффиксы подчеркивания к именам параметров Objective-C в автоматически сгенерированных заголовках

Сообщение Anonymous »

У меня был метод Swift с параметром mod. Я заметил, что автоматически созданный заголовок [Project]-Swift.h переименовал этот параметр в модуль_ в сигнатуре Objective-C для этого метода. После дополнительного исследования выяснилось, что это происходит с ключевыми словами C++:

Код: Выделить всё

@objcMembers class SomeClass: NSObject {
func someMethod(init: String) {}

// ↓ These will append an underscore in the header file.
func someMethod(template: String) {}
func someMethod(consteval: String) {}
}
становится:

Код: Выделить всё

SWIFT_CLASS("_TtC9iOSTester9SomeClass")
@interface SomeClass : NSObject
- (void)someMethodWithInit:(NSString * _Nonnull)init;
- (void)someMethodWithTemplate:(NSString * _Nonnull)template_;
- (void)someMethodWithConsteval:(NSString * _Nonnull)consteval_;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
Это задокументированное поведение компилятора или просто какие-то детали реализации? Зачем это нужно?


Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-autoge

Вернуться в «C++»