Класс внешнего хранения используется для объявления глобальной переменной, которая будет известна функциям в файле и может быть известна всем функциям в программе. Этот класс хранения имеет длительность, которая является постоянной. Любая переменная этого класса сохраняет свое значение, пока не будет изменена другим присваиванием. Область является глобальной. Переменная может быть известна или видна всем функциям в программе.

разница между статической функцией-членом и внешней функцией связи "C"? Например, при использовании «makecontext» в C ++ мне нужно передать указатель на функцию. Google рекомендует использовать для этого внешнюю связь «C», потому что «makecontext» - это C. Но я обнаружил, что использование static также работает. Мне просто везет или ...

class X {
   public:
   static void proxy(int i) {}
}
makecontext(..., (void (*)(void)) X::proxy, ...);

против

extern "C" void proxy(int i) {}
makecontext(..., (void (*)(void)) proxy, ...);

РЕДАКТИРОВАТЬ: Можете ли вы показать компилятор или архитектуру, где статическая версия члена не работает (и это не ошибка в компиляторе)?

Ответы на вопрос(5)

Ваш ответ на вопрос