LINUX.ORG.RU

Как определить функцию так, что бы ее определение не экспортировалось в объектник?

 


0

2

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

Засунь в безымянный namespace.

ox55ff ★★★★★
()

static?

static bool isMyFunc()
{
    return true;
}

xaizek ★★★★★
()

Если я правильно понял чего ты хочешь, то как то так:

namespace {
    static void foo();
} // namespace
pon4ik ★★★★★
()
static void foo() {
}
namespace {
void bar() {
}
}
AlexVR ★★★★★
()

Что бы можно было создавать функции с одинаковыми определениями в разных файлах.

Сдаётся мне, батенька, вам классы нужны. Хотя могу, конечно, ошибаться.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Сдаётся мне, батенька, вам классы нужны. Хотя могу, конечно, ошибаться.

нет, не классы. Есть какой-либо отлаживаемый и переделываемый модуль. Хочу не городить в нем закомментированные блоки, а создать новый файл, и замкнуть на него вызовы, и в нем уже экспериментировать. А потом вернуться в исходный файл и подправить там нужные кусочки.

В С++ любая функция экспортирует свое имя, даже если она не объявлена в заголовочном, и бывают глюки или конфликты с этим, если в двух модулях функции с подобными объявлениями.

victor79
() автор топика
Ответ на: комментарий от kachsheev

Да, что-то мне не удалось вспомнить, почему я теперь так делаю. Наступил на очень интересные грабли которые таки позволяли вызвать по имени статическую функцию из другой единицы трансляции, но сейчас воспроизвести не удалось, возможно это был баг линковщика, хм.

Жалко на лоре тогда не запостил сиё.

pon4ik ★★★★★
()
Ответ на: комментарий от victor79

В С++ любая функция экспортирует свое имя, даже если она не объявлена в заголовочном

По умолчанию...

LC_ALL=C man g++ | grep visibility

И только под онтопиком, и только в gcc.

pon4ik ★★★★★
()
Последнее исправление: pon4ik (всего исправлений: 1)

Про static уже говорили?

anonymous
()

Выше уже ответили про static и безымянный namespace, но только в первом случае функция получает настоящий internal linkage

annulen ★★★★★
()
Ответ на: комментарий от annulen

Cогласен, правильнее было бы написать - кроме оффтопика.

pon4ik ★★★★★
()
Последнее исправление: pon4ik (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.