2012-05-02 2 views
0

У меня есть вопрос относительно компилятора C++.Компилятор C++ - общие символы

Когда именно компилятор C++ создаст общий символ? С компилятором C я мог бы предоставить общие символы в объектный файл, но если я скомпилирую тот же самый код с компилятором C++ (GNU), я получаю только определенные и неопределенные символы.

Итак, вопрос в том, какие обстоятельства вызовут смену переменной/функции как общего в C++?

ответ

1

Некоторые из них никогда не делают. Поздний и многозадачный компилятор Watcom C++ широко использовал общие символы для экономии встроенных экземпляров функций. Существуют различные случаи extern, которые также могут быть разрешены экономически таким образом.

+0

Спасибо. Я пытаюсь обобщить типы символов объекта, и мне нужен пример, который бы соответствовал общему, поэтому, я думаю, я не смогу его предоставить в этом случае. – cosinus

+0

@cosinus Примером является встроенный вызов функции! – EJP

1

Основная причина, по которой существуют общие символы, состоит из Fortran с его общими блоками и, следовательно, с именем «общий символ». Сама концепция общих символов противоречит C++, и это довольно строгое правило определения. C имеет аналогичное правило, но стандарт C также распознает, что разрешение нескольких определений одного и того же символа является общим расширением языка. В C++ нет приложения «common extension». Либо продавец соответствует стандарту, либо нет.

Итог: для компилятора C++ нет причины генерировать общий символ.

Смежные вопросы