Разрешить указанную c неопределенную ссылку с GCC - PullRequest
2 голосов
/ 07 мая 2020

В программе C ++ с G CC я использую флаг компоновщика -Wl,--no-undefined, поэтому компоновщик выдаст ошибку, если есть неопределенные ссылки. Есть ли прагма или что-то еще, что я могу поместить в код рядом с определенным символом c, который я хочу разрешить неопределенным во время ссылки?

1 Ответ

2 голосов
/ 07 мая 2020

Один из вариантов - сделать этот символ слабым :

Слабый символ обозначает специально аннотированный символ во время связывания объектных файлов исполняемого и связываемого форматов (ELF). По умолчанию без аннотации символ в объектном файле является сильным. Во время связывания сильный символ может заменять слабый одноименный символ. Напротив, два строгих символа с одинаковым именем приводят к ошибке ссылки во время ссылки. При компоновке двоичного исполняемого файла слабо объявленный символ не нуждается в определении. Для сравнения (по умолчанию) объявленный сильный символ без определения вызывает ошибку неопределенной символьной ссылки.

Например:

#pragma weak power2
int power2(int x);
...