Существует ли способ получить лучшую информацию для контекста ошибки при использовании msvc? (исключая: C2248)

Рельсы-2.3. *

# app/models/user_mailer.rb
class UserMailer < ActionMailer::Base
  def self.smtp_settings
    USER_MAILER_SMTP_SETTINGS
  end

  def spam(user)
    recipients user.mail
    from 'spam@example.com'
    subject 'Enlarge whatever!'
    body :user => user
    content_type 'text/html'
  end
end

# config/environment.rb
ActionMailer::Base.smtp_settings = standard_smtp_settings
USER_MAILER_SMTP_SETTINGS = user_smtp_settings

# From console or whatever...
UserMailer.deliver_spam(user)
8
задан valiano 30 August 2017 в 06:30
поделиться

4 ответа

Я могу подтвердить с помощью Code :: Blocks и VC ++ 2005, что он не дает намеков, где возникает ошибка. Также не объявляется справка вашего собственного частного конструктора копирования.

#include <boost/noncopyable.hpp>

class X: boost::noncopyable
{
};

void foo(X x) {}

int main()
{

    X x;
    foo(x);
}

Журнал компиляции (пятая строка - последняя строка объявления класса):

main.cpp (5): error C2248: 'boost :: noncopyable _ :: noncopyable :: noncopyable ': невозможно получить доступ к закрытому члену, объявленному в классе' boost :: noncopyable _ :: noncopyable ' C: \ boost_1_38_0 \ boost / noncopyable.hpp (27): см. Объявление 'boost :: noncopyable _ :: noncopyable :: noncopyable' C: \ boost_1_38_0 \ boost / noncopyable.hpp (22): см. Объявление 'boost :: noncopyable _ :: noncopyable' Эта диагностика произошла в сгенерированной компилятором функции 'X :: X (const X &)'

. Если не будет переключателя компилятора для включения более тщательной диагностики ошибок, я не впервые просто скомпилирую файл с GCC (MinGW), чтобы получить более полезную диагностику ошибок. (Увы, ваш код не должен содержать расширений VC ++.)

4
ответ дан 6 December 2019 в 01:40
поделиться

Вы можете временно создать ручной конструктор копирования (с той же подписью) и реализацию по умолчанию, просто с целью отслеживания этой ошибки ..? Не уверен, что это упростит поиск.

0
ответ дан 6 December 2019 в 01:40
поделиться

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

Если дважды щелкнуть проблему в списке ошибок и перейти в окно вывода, курсор будет перемещен на это сообщение об ошибке.

-1
ответ дан 6 December 2019 в 01:40
поделиться

В окне вывода или в журнале сборки вы должны увидеть, где компилятор пытался использовать шаблон в вашем коде ... однако вам придется немного прокрутить.

Если в журналах сборки недостаточно информации, есть также опция, контролирующая подробность сборки msbuild:
Инструменты-> Параметры-> Проекты и решения-> Сборка и запуск-> Подробность вывода проекта MSBuild

-1
ответ дан 6 December 2019 в 01:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: