Заголовок скомпилированного gcc: прагма один раз в основном файле - PullRequest
3 голосов
/ 12 июня 2019

Я создал заголовочный файл. Что-то простое, как следует.

#pragma once

#include <iostream>

template<typename T>
void say(T t) {
    std::cout << t << std::endl;
}

, а затем используйте g++ для создания предварительно скомпилированного заголовка gch с g++ hello.h. Это дает мне это предупреждение ->

pch.h:2:9: warning: #pragma once in main file
    2 | #pragma once
      |         ^~~~

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

Я что-то здесь не так делаю?

1 Ответ

2 голосов
/ 12 июня 2019

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

В Clang вы можете отключить предупреждение для этого конкретного вызова компилятора (с помощью -Wno-pragma-once-outside-header); в GCC вам просто придется улыбаться и терпеть это сейчас.

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