Почему 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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