В представленном коде нет ничего плохого ни в интерпретации C, ни в интерпретации C ++.
В частности, вопреки некоторым комментариям по этому вопросу, unsigned
поддерживается стандартомпсевдоним для unsigned int
на обоих языках, так же как long
является стандартным поддерживаемым псевдонимом для long int
. Таким образом, нет никакой внутренней проблемы с самой декларацией typedef
, которая, на самом деле, VS не помечает флагом.
Везде, где объявление typedef
находится в области видимости, идентификатор, который он объявляет -- InputCode
в этом случае - допустимо для использования в качестве имени типа, именно так, как кажется, код ожидает. Поэтому нет никаких проблем с объявлением struct KeyboardInfo
.
Если компилятор Visual Studio или IDE жалуется на представленный код, то это является недостатком в Visual Studio. Однако вы можете обнаружить, что VS успешно компилирует код, несмотря на то, что IDE помечает проблему в нем.