Я читал некоторые другие вопросы, похожие на это, но я до сих пор не знаю, если
Существует разница в использовании между «VOID» и «void».
Мне неудобно использовать VOID, не зная точной разницы с void.
Любой утешительный совет очень ценится.
void
ключевое слово зарезервировано языком, но VOID
не является. Это определяется в «winnt.h» следующим образом:
#ifndef VOID
#define VOID void
Таким образом, они по сути одинаковы и могут использоваться взаимозаменяемо. Иногда один используется вместо другого ради конвенций, но не имеет значения, какой вы используете. Препроцессор в итоге заменит VOID
с void
в любом случае в вашем коде, потому что это то, что #define
делает.
На самом деле многие ключевые слова «typedefed» в Windows к своей столице. Я думаю, что это просто для обеспечения совместимости между 8-битной, 16-битной и 32-битной Windows. Почему они сделали это с void
хотя … Это просто странная Windows. (Насколько я знаю)
Разница в том, что void
является частью языка и VOID
не является. Если вы посмотрите на вывод препроцессора для одного из ваших исходных файлов, содержащих VOID
, вы должны быть в состоянии найти строку, которая содержит строку что-то вроде:
typedef void VOID;
Что должно заставить вас чувствовать себя лучше.
Изменить: я вижу из вашего комментария выше, что есть #define VOID void
линия. В этом случае вы знаете, что они одинаковы, но вы, вероятно, не увидите VOID
на выходе препроцессора. Что ты будут видите, это везде в вашем коде, который вы использовали VOID
, предварительно обработанный вывод будет иметь void
вместо.