質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • Xcode

    4212questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • C++

    3595questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Visual Studio

    1911questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • IDE

    117questions

    IDE、統合開発環境((Integrated Development Environment)とは、テキストエディタ以上の機能を提供して、ソフトウェア開発を効率をあげるコンピュータプログラムを指す。

エディターによってコンパイル出来る時とそうでない時がある。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 467

ruka906

score 6

こんにちは。私はC++を大学で習っていて、授業内でのグループワークで気になっていたことがあります。
私がwindows8 PC,visual studio2015を使って書いたコードをグループメンバーに送って、試しにコードを動かしてもらうと、コンパイル出来ないと言われることがあります。(その友人はios, Xcodeを使っていますバージョンはわからないです...)
これは何が原因で起こっているのでしょうか?
また違ったメンバー(windows,code block)でも同じことを言われたことがあります。
ただ友人が何かミスをしただけなのでしょうか...

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • cateye

    2017/06/21 04:18 編集

    >コンパイル出来ないと言われることがあります。・・・コンパイルできる事もあるという事でしょうか? また、エラー内容を教えてもらう事は出来ますか? ソースの文字コード、改行文字は確認されましたか?xcodeはclang、code::blocksはgccと思いますが、VC固有のライブラリなど使ってないですか?

    キャンセル

  • _Victorique__

    2017/06/21 05:22

    私たちは超能力者じゃありませんので、コードを示してください。

    キャンセル

回答 2

checkベストアンサー

+6

同じC++といっても環境や実装に依存した物がたくさんあります。

C++はISOの規格として標準化されており、最新はC++14です(今年C++17が出る予定です)。しかし、全てのコンパイラが最新規格の全ての機能に対応しているわけではありません。ただ、Visual Studio 2015(コンパイラ部分はVisual C++とも言われる、以下コンパイラ部分はVC++と表現)よりはXcode(コンパイラはLLVMを使用、以下コンパイラ部分はLLVMと表現)の方が対応している機能が多いので、対応していない規格を使用していたという可能性は低いでしょう(LLVM⇒VC++の場合は未対応でこけることがよくあります)。

次に、規格としてはあるけど、必ずしも実装する必要が無い機能があります。たとえば、C++というよりC11なのですが、scanf_sというscanfをセキュリティ拡張した関数は規格上はオプション扱いで必須ではありません。VC++では実装されていますが、LLVMでは未実装です。そのため、このような関数を使用している場合、VC++ではコンパイルできてLLVMではコンパイルできないというのもあります。他にも規格には存在しないコンパイラ独自の拡張が存在します。独自の拡張を使用している場合は、もちろん片方ではコンパイルできません。

他にもプラットフォーム特有の関数やライブラリがあります。たとえばWindowsではデスクトップアプリケーションはWinMainから始めますが、これはWindows特有のエントリーポイントであり、他のプラットフォームではエントリーポイントと見なされません。実行形式として作成する場合、他にmainがなければ、リンカでmainがないとされ、エラーになるでしょう。その他、Win32APIといわれる関数もWindows独自ですし、Win32APIで使用するWORDLPTSTRなどの型もWindows独自です。これらを使用していれば、MacやLinuxなど他の環境ではコンパイルすることができません。ヘッダも環境特有が存在し、windows.hというWindowsでは重要なヘッダもWindowsにしか存在しません。

最後に問題になるのは文字コードです。Visual Studio 2015でデフォルトで作成するとANSI(日本語環境ではWindows-31J)になります。日本語環境のWindows-31JはShift_JISの亜種です。対して、XcodeでのデフォルトはBOM無しUTF-8です。ASCIIのみであれば全く同じになるので問題が出ませんが、平仮名や漢字が含まれている場合、異常な文字コードとしてエラーになる場合があります。ASCII以外の文字がある場合は、文字コードを変換するなどの何らかの対応をしないとコンパイルすることはできません。

他にもクロスプラットフォーム(複数のプラットフォームで動かすということ)でC++を書く場合は多くの留意すべき事があります。実際にコンパイルや実行してみて、エラーを一つ一つ確認していくしかありません。クロスプラットフォームで苦労したくない場合は、C++でもQtなどある程度プラットフォーム間の差異を吸収しているくれるものを使うとか、プラットフォーム間に差異が少ない言語を使うとか、なんらかの工夫をしています。素のCまたはC++でのクロスプラットフォーム開発は、よくわかっている人ではないとわりと厳しいと思ってください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/21 08:40

    丁寧なご説明ありがとうございす!とてもわかりやすかったです。オリジナルのvisual studioを使っているのできっと文字コードには問題ないと思います(たぶん...)。もう少し規格や環境について詳しく勉強してみます。ありがとうございます。

    キャンセル

0

「コンパイルできない」の具体的な現象がないと何とも言えません。
コンパイルエラーになるのか、それ以前のエラーなのか。

プログラムの内容に依らずということであれば、
・メールでのファイル添付に失敗している(ファイルが受け取れていない)
・ファイル名がおかしい  ⇒ コンパイルの仕方によってはコンパイルできないかも
・文字コードがおかしい  ⇒ コンパイルは出来て、内容によってはエラーが出るかも
・改行コードがおかしい  ⇒ でも多分コンパイルは出来るはず
・友人が何らかの操作ミス

想像では、単なるコンパルエラー(プログラム内容が間違っている)な気がしますが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

同じタグがついた質問を見る

  • Xcode

    4212questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • C++

    3595questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Visual Studio

    1911questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • IDE

    117questions

    IDE、統合開発環境((Integrated Development Environment)とは、テキストエディタ以上の機能を提供して、ソフトウェア開発を効率をあげるコンピュータプログラムを指す。