C++はOSやプラットフォームや開発ツールのバージョンが変更されても、現状の資産を変更せずにそのまま使えるって聞きましたか、そんなこと、本当にできるのでしょうか?
例えばWindows環境で開発しても、LinuxやMacで動かすっていうことも可能なのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
C++はOSやプラットフォームや開発ツールのバージョンが変更されても、現状の資産を変更せずにそのまま使えるって聞きましたか、そんなこと、本当にできるのでしょうか?
極めて限定的な条件下ではできますが、多くの場合、「そのまま」ではまず無理です。
C++は国際規格で仕様が決まっていて、その仕様の範囲内で注意深く作ったソースコードであればプラットフォームや開発ツールの違いにかかわらず「そのまま」使えます。
ただし、例えばウィンドウを開いて画像を表示するとか、音楽を再生するとか、そういったことはC++の仕様に含まれていないので、開発ツールやプラットフォームが提供する機能をAPI
を介して利用することになるのですが、プラットフォームが異なればAPI
も異なるため、「そのまま」使うことはできません。
そこで、「できるだけそのまま」使えるようにすることを目的とした「マルチプラットフォーム対応フレームワーク」なるものがいくつも登場しています。それでも、プラットフォームの違いを理解していないと「そのまま」使えるようなソースコードは書けません。
開発ツールのバージョンに関しては、大抵のツールは後方互換があるので、旧バージョンの資産をそのまま使えるケースが多いです。ただし、あまりにバージョン間の開きが大きすぎるとそのままでは使えなくなる場合もあります。
例えばWindows環境で開発しても、LinuxやMacで動かすっていうことも可能なのでしょうか?
基本的には無理です。C++は「コンパイル」しないと実行できないのですが、コンパイルしてできる実行ファイルがプラットフォームによって異なるため、たとえC++標準規格の範囲内で作ったアプリでも、Windowsで作ったものをMacで動かす、などということはできないのです。その場合、ソースをMacでコンパイルする必要があります。
投稿2016/10/20 17:58
総合スコア5938
0
こんにちは。
例えばWindows環境で開発しても、LinuxやMacで動かすっていうことも可能なのでしょうか?
慎重にプログラム開発することで、そこそこ可能です。
まず、C/C++言語の規格にはコンパイラの開発者に仕様の決定を任せている部分が多数あります。そのような部分は処理系依存と呼ばれ、コンパイラやビルド・オプションにより非互換です。
それらをさけて処理系の間で互換性を確保できる方法でプログラムを記述する必要があります。
例えば、int型のサイズは2バイトか4バイトのどちらかが多いです。それで困る場合はint32_tのような32ビットであることが保証されている型を使う等です。
次に、OSのAPIもOS毎に異なります。この部分を完全に吸収することは不可能です。
ですが、標準ライブラリはOSのAPIの相違を一部吸収してます。(ファイルのリード/ライト等)
また、例えば、boostはもっと吸収している範囲が広いです。そのようなライブラリを活用することでOSの相違もある程度吸収できます。(残念ながら十分と言うには程遠いですが。)
そのような部分の中で、最も辛いのはGUIと思います。boostもGUI開発はサポートしていません。
GUIをマルチ・プラットフォームで開発できるフレームワークが幾つか(QtやC++Builderなどなど)ありますので、それらを使うことでそこそこマルチ・プラットフォーム対応なGUIプログラムを開発できます。
無償で使えるものは使い方が難しかったり使える範囲が限定されていたりします。有償のものは使い方も簡単で使える範囲も広いてすが、なかなか高価です。
投稿2016/10/20 16:19
総合スコア23272
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
OSやプラットフォームや開発ツールのバージョンが変更されても、現状の資産を変更せずにそのまま使える
同一OS、同一プラットフォーム、同一開発ツールで、バージョンだけ異なるという条件であれば、動くこともあるでしょうし、バージョンアップで機能変更された機能を使っていれば、動きません。
例えばWindows環境で開発しても、LinuxやMacで動かすっていうことも可能なのでしょうか?
OSに依存しないプログラムを書けば可能です。
OSに依存するプログラムだと動きません。
と、当たり前の回答しか出来ないですね。
C/C++規格の標準ライブラリしか使っていない簡単なプログラムであればOSに依存せずに動かす事も可能です。
Windows+Cygwinとか、Linux+wine、Linux+mono、Linux+.NET core等を使えばある程度の複雑なプログラムをOSに依存せずに書くことも可能です。
もっと具体的にやりたいことを質問した方が良いと思います。そうじゃなくて、ふとした疑問のレベルであれば、上記ということです。
投稿2016/10/20 15:59
総合スコア84553
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ある意味できてある意味できないといったところでしょうか。
例えば
c
1#include <stdio.h> 2 3void main() 4{ 5 printf("test"); 6 return; 7}
などであればvisual studioでコンパイル仕様がgccでコンパイルしようが、windows mac等あまり関係ないですが、
例えばwindowsで開発時win32apiやMFCなどWindows(プラットフォーム)特化のものを利用すると再利用不可と思います
投稿2016/10/20 15:15
総合スコア1689
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。