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

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

新規登録して質問してみよう
ただいま回答率
85.48%
IDE

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

Visual Studio

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

Xcode

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

C++

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

Q&A

解決済

2回答

2048閲覧

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

ruka906

総合スコア12

IDE

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

Visual Studio

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

Xcode

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

C++

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

0グッド

1クリップ

投稿2017/06/20 19:11

編集2017/06/20 19:12

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2017/06/20 19:25 編集

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

2017/06/20 20:22

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

回答2

0

ベストアンサー

同じ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/20 22:32

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ruka906

2017/06/20 23:40

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

0

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

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

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

投稿2017/06/20 22:12

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問