LINUX.ORG.RU

прототип у static-функций


0

0

Если указать в заголовочном файле прототип static-функции
то при подключении этого хедера в другом месте получим
warning: `my_func` declared ‘static’ but never defined

Как с этим бороться? Нашёл три рецепта:
1) -Wunused
2) декларацию таких функций засовывать между #ifdef и
перед подкоюченим заголовка сделать соотв. #define
3) не делать для них прототип вообще.

Какой способ правильный? :) Может, есть другие способы
избежать этого?
★★★★★


> 3) не делать для них прототип вообще
3) не делать для них *публичный* прототип вообще

// wbr

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

> Отсюда следует вывод что прототипы static-функций не имеет смысла вносить в файлы заголовков

Я думал что заголовки нужны(кроме случая с библиотеками) чтобы сделать быстрый overview исходника и вообще хорошая рекомендация. Лана, хрен с ними, перенесу прототипы в .c-файл или потру если мешать будут.

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

> 3) не делать для них *публичный* прототип вообще

а куда его засовывать? Прямо в .c-файл? не делать же отдельных хедер?

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

> а куда его засовывать? Прямо в .c-файл? не делать же отдельных хедер?

если очень хочется засунуть, то прямо в .c файл. в любом другом месте этот прототип просто бессмысленен.

// wbr

klalafuda ★☆☆
()

static функции не винды за пределами объектного модуля, в котором они определены. Поэтому включение их в .h-файл полностью бессмысленно. .h-файлы пишутся в случае возможного повторного использования. Обратиться же к static-функциям из другого объектного (читай .c) файла не получится. Их имена не экспортируются.

anonymous
()
Ответ на: комментарий от true_admin

> что заголовки нужны(кроме случая с библиотеками) чтобы сделать быстрый overview исходника

Для быстрого overview исходника используют грамотные IDE. У *.h файлов совсем другая задача.

anonymous
()
Ответ на: комментарий от true_admin

> Я думал что заголовки нужны(кроме случая с библиотеками) чтобы сделать быстрый overview исходника

их задача -- описание интерфейса. static функции не имеют отношения к интерфейсу, хотя бы поэтому им там не место.

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.