Компилятор C ++ не любит "использование INLINE = extern inline" - PullRequest
0 голосов
/ 04 июня 2018

Существует много информации об использовании inline и о том, как правильно сделать это для желаемого намерения, такого как здесь (которое я в настоящее время использую в качестве ссылки) Встроенные функции в C .

Когда я пытаюсь реализовать то, что указано на странице, я получаю ошибки компилятора для

using INLINE = extern inline;

и даже просто

using INLINE = extern;

Компилятор говорит "ожидается"спецификатор типа перед extern "

Мне интересно, почему я могу использовать using таким образом?

Это потому, что using действительно просто зарезервировано для типов и подстановок?

Опубликовать ответ

Спасибо большое!Я полностью пропустил тот факт, что я читал через C ссылку.Это хорошая новость, так как не похоже, что из того, что я читал, был действительно хороший способ справиться с вещами, но, вероятно, это так, поскольку он устарел по сравнению с тем, что сейчас делают в C ++ 11.

1 Ответ

0 голосов
/ 04 июня 2018

Это потому, что использование действительно просто зарезервировано для типов и подстановок?

Я не знаю, что вы подразумеваете под подстановками, но да, для резервирования типов.Объявление псевдонима предназначено для объявления новых имен для типов .Пара спецификаторов не формирует тип.Вы даже не можете заставить его работать, просто добавив туда имя типа, поскольку спецификаторы extern и inline применяются только к идентификаторам объектов и функций, но не к их ассоциированным типам.

В статье используется макрос (#define), поскольку подстановка токенов является единственным способом создания пользовательских спецификаторов, как вы хотите.

Стоит также отметить, что в C ++ inlineи extern inline - это одно и то же.Только в C (отличном от C ++ языке и предмете связанной статьи) inline не подразумевает связывание, требующее указать extern.

...