Быстрый вопрос о приведении основных типов возврата - PullRequest
2 голосов
/ 14 августа 2010

Я часто использую возвращаемые типы, чтобы заставить замолчать предупреждения компилятора, и это всегда заставляет меня чувствовать, что я делаю что-то не так.

Этот пример - Objective-c

const char *strBuf = [anNString UTF8String];
[anOutputStream write:strBufr maxLength:len];

Это дает мне предупреждение компилятора, так как -UTF8String возвращает const char * и -write: maxLength: занимает const uint8_t *

Так что, не зная ничего лучшего, я обычно добавляю актерский состав, чтобы прекратить нытье и продолжать свой веселый путь.

Это плохой стиль (с моей стороны) или просто так?

Я ценю любые мысли или советы.

Ответы [ 2 ]

0 голосов
/ 14 августа 2010

Этот тип кастинга выглядит некрасиво, но это наиболее общий способ борьбы с подобными несоответствиями типов.Некоторые компиляторы предоставляют другие способы отключения этих предупреждений, но их отключение - плохая идея, потому что иногда они действительно имеют значение.Кастинг признает разницу и гарантирует, что вы подумали о возможных последствиях.

( Делайте подумайте о последствиях. Если вы просто бездумно разыгрываете вещи, все может пойти не так. Но выкажется, не делает этого.)

0 голосов
/ 14 августа 2010

Обойти это невозможно. C, C ++ и Objective-C - строго типизированные языки. Таким образом, в любое время, когда происходит такое преобразование типа, вы получите предупреждение компилятора. Единственный выход - использовать одни и те же типы, что не всегда возможно. Это типично. Я бы продолжал делать то, что ты делаешь. Не игнорируйте предупреждения и не отключайте их, потому что будет одно преобразование типов, которое будет ошибкой, которую вы захотите исправить. Если вы выключите предупреждения, вы оставите себя уязвимым для получения ошибки, которую будет очень трудно найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...