Isystem принудительно связывает заголовок с CC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Isystem принудительно связывает заголовок с C

Сообщение Anonymous »

Это похоже на - но отличается от - Почему OpenBSD G++ делает системные заголовки по умолчанию связями C? Это не BSD, а кросс-компилятор Arm g++.
С этой тривиальной парой исходных файлов -
mbed/can .h

Код: Выделить всё

template  void ftest2(T t) { }
src/outer.cpp

Код: Выделить всё

template  void ftest0(T t) { }
#include 
template  void ftest1(T t) { }
Следующая команда завершается с ошибкой:

Код: Выделить всё

/arm-none-eabi-gcc/7.3.1-1.2.2/.content/bin/arm-none-eabi-g++ \
-isystem"mbed" \
-c "src/outer.cpp"

In file included from src/outer.cpp:2:0:
mbed/can.h:1:1: error: template with C linkage
template  void ftest2(T t) { }
Это очень странно, поскольку ни одно из определений шаблона в файле CPP не дает сбоя, и (по-видимому) ничего не меняется от CPP к H. Я могу только предположить, что gcc творит какую-то запрещенную магию с -isystem и заставляет заголовок интерпретироваться как файл C, но я понятия не имею, почему, и мне нужно, чтобы это прекратилось. Мне нужен -isystem, так как в реальной жизни код mbed завален предупреждениями, которые мне нужно подавить для этого дерева каталогов.
Этот загадочный комментарий, кажется, именно мой проблема:

Подсказка для будущих читателей: если вы передаете включаемый каталог в gcc через -isystem вместо -I, некоторые версии могут неявно применять C связь. – Ян Шац, 1 июля 2019 г., 15:02

Но нет никаких намеков на то, как это можно решить.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -c-linkage
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»