Как указать файлы для включения перед компиляцией по умолчанию - PullRequest
0 голосов
/ 09 мая 2019
// a.cpp
void foo() {
    uint16_t var_in_a;
}
// b.cpp
void foo() {
    uint16_t var_in_b;
}
// c.cpp
void foo() {
    uint16_t var_in_c;
}

В этом примере я должен включить файл <stdint.h> во все файлы .cpp. Я хочу избежать этой деятельности. Я хочу указать этот <stdint.h> файл в свойствах моего компоновщика / IDE и включить его в каждый .cpp файл.

Есть ли способ заставить компилятор включать указанные файлы при компиляции любых .cpp файлов?

Пожалуйста, дайте ответ для следующих инструментов компиляции / IDE

  • визуальный студийный код
  • Визуальная студия
  • г ++

Ответы [ 2 ]

1 голос
/ 09 мая 2019

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

Visual Studio имеет аналогичный параметр компиляции: / FI.Официальная документация: https://docs.microsoft.com/en-us/cpp/build/reference/fi-name-forced-include-file?view=vs-2019

1 голос
/ 09 мая 2019

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

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

Некоторые люди помещают общие включения в предварительно скомпилированный заголовок.

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

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