Тип Преобразование летучего символа в регистр - PullRequest
0 голосов
/ 22 августа 2011

Я нахожусь в ситуации, когда в моем коде C появляется дополнительное предупреждение.

warning # 2513-D: значение типа "volatile char *" не может быть присвоено объекту типа "char * "A = B;

когда я проверил свой код, я обнаружил, что A и B определены следующим образом:

register char *A;
extern volatile char *B;

Может кто-нибудь подсказать, как мне набрать приведение, чтобы игнорироватьвыше предупреждение.Есть ли плохое влияние или побочный эффект, если я делаю приведение типа.Я не хочу менять декларацию A, хотя она работает нормально и удаляет предупреждение.Но изменение объявления A будет иметь большое влияние на мой код.

Пожалуйста, предложите какой-нибудь способ.

Спасибо, Гольди

1 Ответ

0 голосов
/ 04 ноября 2011

Ключевое слово регистра можно игнорировать. Вы можете разыграть как

A = (char *) B;

Отбрасывание volatile означает, что некоторые оптимизации (при использовании нового значения A) могут привести к использованию устаревших значений, тогда как те же вычисления с использованием B приведут к другому (и, возможно, лучшему) результату. Предполагая, что мы говорим о C. C ++ похож, но не совсем идентичен AFAIK, даже если это не имеет значения в этом случае.

...