extern на статической функции в C ++

Я не знаю, почему это сводит меня с ума, но это так. У меня есть функция, определенная и объявленная в главном.

static void myFunc(int x);

static void myFunc( int x)
{
   //do stuff
}

main()

Я хочу использовать myFunc (int x) в другом классе. Поэтому я думаю, что все, что мне нужно сделать, это extern static void myFunc (int x) внутри этого класса, а затем просто вызовите его там, где мне нужно, в определении класса, но это не сработает.

Что я делаю не так?

благодаря

9

1 ответы

Вы не можете использовать extern и static вместе, они являются взаимоисключающими.

static means Internal Linkage
extern means External Linkage

Вам нужно использовать только extern , если вам нужна внешняя связь.

Good Read:
what is external linkage and internal linkage in c++?

18
добавлено
Хорошо, это то, что я думал, но когда я удаляю статику из определения, она все равно не будет строить.
добавлено автор Dixon Steel, источник
Спасибо, у меня есть, я удалил статику, а также я ее объявил неправильно в заголовке.
добавлено автор Dixon Steel, источник
Если вы сохраняете декларацию как static void myFunc (int); , функция будет static , независимо от наличия static code> в определении.
добавлено автор David Rodríguez - dribeas, источник
@DixonSteel: вы удаляете ключевое слово static из определения declaration и функции , а затем вы можете получить к нему доступ, используя extern из другого исходного файла (фактически,
добавлено автор Alok Save, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest