заголовок полон встроенных функций, могу ли я переместить код за пределы файла заголовка и все еще встроить все? - PullRequest
5 голосов
/ 25 марта 2012

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

но теперь заголовочный файл является чем-то очень необычным (поскольку он является заголовочным файлом), чтобы сделать его более читабельным, я подумал сделать что-то вроде этого:

#ifndef MY_HEADER_H
#define MU_HEADER_H

static inline 
void my_fnct (my_param a);

#include "my_header.inline.c"

#endif

и файл my_header.inline.c будет выглядеть так:

static inline 
void my_fnct (my_param a)
{
    // .. my code ..
}

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

мой вопрос: есть лучший способ сделать это, не заполняя заголовочный файл слишком большим количеством кода? или я могу сделать это и ожидать, что другие разработчики поймут этот код без проблем?

Ответы [ 2 ]

1 голос
/ 25 марта 2012

Практика, которая лично мне не нравится, - это извлечение встроенных функций в отдельный файл с расширением .inl. Это просто соглашение, и вы можете назвать файл как угодно. У меня есть IDE, которая сворачивает код, поэтому я могу просто скрыть то, что не хочу видеть, вместо того, чтобы иметь отдельный файл.

1 голос
/ 25 марта 2012

Нет, вы не можете.Однако вы можете использовать функцию оптимизации времени соединения в GCC (тогда некоторые вызовы могут быть встроенными, даже если функция не объявлена ​​inline и недоступна в заголовках для каждой единицы компиляции), например, compile и link с gcc -flto (для этого требуется недавний компилятор GCC, например, как минимум 4.6 и замедляется время сборки).

...