Вопрос

В последний раз я активно использовал C++ много лет назад, и это было сделано строго на платформе Windows.В частности, я использовал Microsoft Visual Studio в качестве IDE и разработал несколько привычных шаблонов для использования версии Microsoft C++.Например, я использовал пустая функция() вместо стандартного интервал основной().

Сейчас я беру курс, где необходимо разрабатывать программы, совместимые с ANSI C++, и код будет скомпилирован с использованием g++.Я быстро это понял система («ПАУЗА») не работает в g++ и, вероятно, это проблема Microsoft.

Кто-нибудь знает какие-нибудь хорошие ресурсы (сайты, учебные пособия, книги), где я могу узнать, что еще нужно сделать, чтобы улучшить жалобу ANSI C++?

Спасибо.

Это было полезно?

Решение

Я очень рекомендую эти два:

  • comp.lang.c++ Группа новостей Usenet.Если вы сможете найти хорошего поставщика услуг Usenet и воспользоваться программой чтения новостей, вы сможете избавиться от спама.я использую вечный сентябрь.org, и это очень нравится.
  • Прочтите Часто задаваемые вопросы по C++.Там много полезной информации.

Конечно, они оба не очень хороши, если вам нужно введение в C++, но похоже, что вы уже немного знаете C++ и вам нужно узнать больше и исправить вредные привычки.По моему личному опыту, два вышеупомянутых метода очень полезны именно для этого.

О comp.lang.c++, убедитесь, что вы полностью прочитали их часто задаваемые вопросы и затаились там на некоторое время, прежде чем публиковать сообщения.То же самое, конечно, относится и к stackoverflow, хотя здесь скрываться может и не нужно.

С использованием g++, скомпилируйте свои программы с помощью g++ -ansi -pedantic -Wall -Wextra -Weffc++, и убедитесь, что вы понимаете все предупреждения.Я использую:

g++ -Wextra -Wall -Weffc++ -ansi -pedantic -Woverloaded-virtual \
-Wcast-align -Wpointer-arith

Другие советы

Если вы используете g++, скомпилируйте его с флагами -pedantic и -std=c++98.Единственным стандартом для ANSI C++ на самом деле является документ стандарта ISO, который нельзя рекомендовать новичку.Кстати, вы ошибаетесь насчет system("PAUSE") - system() является частью ANSI C++ - однако его параметр не стандартизирован.

Большинство книг по C++ не зависят от платформы (конечно, если они не созданы специально для Visual C++).Вот некоторые хорошие книги рекомендованные профессионалами ##C++

GCC хорошо сообщит вам, когда ваш код не совместим с ISO C++ (не то чтобы это был стандарт ISO или стандарт ANSI).Установите параметры предупреждений -Werror -Wall и просто исправьте все предупреждения;Вскоре вы избавитесь от нежелательных привычек и будете получать все меньше и меньше предупреждений.

Существует множество хороших руководств по gcc, в которых есть флаг, который гарантирует, что код также совместим с ANSI C, gcc -ansi -Wall -fsyntax-only -pedantic

* Wall - turn on all errors
* ansi - use strict ANSI C specification
* fsyntax-only - only checks syntax
* pedantic - reject violations

За комментарии, кроме того, вы можете использовать * -Wextra, чтобы включить несколько дополнительных предупреждений,

обновлять спасибо за обновленную информацию о заглавных буквах и упоминание -pedantic

Много поклонников gcc.

Важными флагами, которые следует использовать при компиляции в Visual Studio, чтобы обеспечить максимальную строгость:

cl /Za /W4 ...rest of command...

/Za отключает специальные расширения Microsoft, а /W4 — это самый высокий уровень предупреждений (кроме /Wall, который жалуется на нелепые вещи).

Я бы также рекомендовал вам использовать современную версию Visual Studio — старые версии (VC6) были до смешного несовместимы, и Microsoft официально делает вид, что их никогда не существовало на тот момент.

Я бы порекомендовал.

веб-сайты:

книги:

  • эффективный С++
  • эффективный стл
  • современный дизайн на С++
  • метапрограммирование шаблонов

разговаривать/слушать экспертов и понимать, что они говорят и почему.

C++ Primer (4-е изд.) на сегодняшний день является лучшей книгой для начинающих, поскольку в ней используется современный подход и изучаются все важные части языка.Accelerated C++ — еще одна книга, которую часто рекомендуют профессионалы, и она служит хорошим введением, но я бы не рекомендовал ее больше покупать, поскольку C++ Primer прекрасно заменяет ее и лучше описывает язык.

Примечание:C++ Primer Plus (довольно плохая книга) не имеет ничего общего с C++ Primer.

Конечно, всегда необходимо упоминать «Язык программирования C++» Страуструпа, поскольку он написан отцом языка.Многие люди находят это поучительным, но лично я бы не рекомендовал его для изучения языка.

Все упомянутые мной книги описывают только стандарт ISO без каких-либо нестандартных расширений.Программы в этих книгах должны работать с любым компилятором C++.

Мне нравится посещать сайт www.cplusplus.com всякий раз, когда у меня возникают сомнения, особенно по поводу стандартной библиотеки C++.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top