Ресурсы для написания кода ANSI C ++ - PullRequest
1 голос
/ 16 января 2010

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

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

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

Спасибо.

Ответы [ 9 ]

2 голосов
/ 16 января 2010

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

1 голос
/ 16 января 2010

Множество вентиляторов gcc.

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

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

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

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

1 голос
/ 16 января 2010

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

1 голос
/ 16 января 2010

Существует множество хороших учебников 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

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

update спасибо за обновление капитализации и упоминание -pedantic

1 голос
/ 16 января 2010

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

0 голосов
/ 17 января 2010

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

0 голосов
/ 16 января 2010

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

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

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

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

0 голосов
/ 16 января 2010

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

веб-сайты:

книга:

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

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

0 голосов
/ 16 января 2010

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

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

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

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

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

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