Недавно я начал решать проблемы с онлайн-судьями, например, с UVA Online Judge. Я пытаюсь решить эти проблемы с C ++ и пишу свой код с помощью xCode IDE.
Однако, когда я использую некоторые функции C, такие как printf или scanf, в моем коде xCode не жалуется, и все работает нормально, однако, когда я передаю свой код судье, он компилируется с GNU C ++ 4.5.3 и выдает ошибку компиляции. Проблема в том, что я должен включить заголовок cstdio.
Немного досадно, что xCode не предупреждает об этой маленькой ошибке. Можно ли как-нибудь включить эти ошибки? Поэтому, когда я использую функцию, которая требует заголовок, он выдает предупреждение или ошибку?
Спасибо!
Проблема вызвана LLVM
набор заголовочных файлов компилятора. <iostream>
включает в себя <ios>
который включает в себя <cstdio>
, что приведет к объявлению printf
присутствовать.
Если вы компилируете код cpp, используя флаг -std=gnu++0x
, под g++
в Linux он успешно компилируется.
Я не думаю, что есть опция, которая вызовет ту же ошибку в MacOS X, если вы не установите полную копию собственно gcc, включая заголовки gcc, так как заголовок неявно включен в <ios>
заголовок для LLVM
В этом случае вы должны были сделать #include <cstdio>
чтобы гарантировать, что функция была объявлена, и это работало бы также на компиляторе gnu gcc.
Других решений пока нет …