Поместите определение функции прямо в заголовочный файл, чтобы компилятор мог встроиться? - PullRequest
2 голосов
/ 02 августа 2010

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

Пример:

// File "foo.h":
struct Foo { 
  // ...   
  int GetCount() const { return count_; }
};

Теперь любой код, который использует Foo, видит всю реализацию GetCount и может решить встроить ее.

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

Ответы [ 2 ]

3 голосов
/ 02 августа 2010

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

0 голосов
/ 02 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...