2011-01-19 5 views
3

標準コードcまたはC++コードですか?彼らは何ですか?Windows API関数

+0

純粋に知的好奇心のためのものなのか、より具体的な質問がありますか?もしそうなら、私たちはあなたの質問にいくつかの文脈を提供すれば、より良い答えを出すことができるかもしれません。 –

+0

これは奇妙な質問です。あなたが質問の背後にある動機づけを説明するなら、あなたはより良い答えを得るかもしれないとCodyが言うように。本質的にあなたは知る必要はありませんが。 Windows APIは、不透明なインターフェイスです。あなたはそれを呼び出すだけで、インターフェイスの反対側にあるものは心配しないでください。あなたはそれが何をしているのかを知る必要があります。 –

+0

こんにちは、「スリープ」という言葉が標準的な機能ではないと聞いたとき、私はキャプティアムの「スリープ」と混同してしまいました。私のコンパイラでは、「スリープ」は未知の関数です。 – user32233

答えて

5

元のWin32 APIはCベースです。しかし、COMベースのWindowsにはかなりの数のサービスがあります。良い例は、クリップボード、ドラッグアンドドロップ、シェル、ユーザーモードドライバフレームワーク、DirectXです。 C言語でCOMコードを記述することは技術的に可能ですが、そうすることは非常に苦労しています。

現実的には、そこにC++を使用しています。そして、元のCベースのAPIを、特にGUIコードのために苦痛を少なくするためのC++クラスライブラリ。

+0

クリップボードとD&Dにも古いCインタフェースがあります(ただし、クリップボードなどの複数形式のサポートなどの機能はありません) – Anders

0

標準Windows APIはCライブラリです。ラッパーは他の言語(C++など)用に存在します。

wikipediaで読んでください。

2

純粋なWindows APIに対してプログラミングしているのであれば、標準のCコードです。

MFCと呼ばれるC++ベースのラッパーが利用できます。

このすべては、.NET frameworkのためにプッシュされています。

+1

+1私は、Windows APIが.NET Frameworkのために段階的に廃止されていると主張するという皮肉なことを誇りに思う。多くの.NET Frameworkは、マネージコードで実装されている同じAPIの単なるラッパーです。それはまだかなり死んでいない! –

0

Windows APIはラングガイトニュートラルです。これはCでもC++でもありません。マイクロソフトでは、Windows自体は主にC++で書かれていますが、大部分のAPIはクラスを必要とせず、APIのクラス(たとえばDirect Xなど)もクラスなしで純粋なC言語で使用できます。

Cプログラマの中にはCライブラリだと思う人もいますが、プログラミング言語のコンパイラは独自のWindows呼び出しモデルをサポートする必要があります。これは古典的なC呼び出し規約ではありません。 (明らかに現実の世界のCコンパイラは、それをサポートしています。)

+0

Windows APIが '__stdcall'を使用しても、それがCライブラリであることが失格になることはありません。 Cコンパイラの間でさえ、よく使われている呼び出し規約がいくつかあります(少なくとも、*は​​ 20年後に多くの変更方法がありました)。どんな言語からでも*消費されるという意味で言語中立であることは間違いありませんが、純粋なベアメタルのWindows APIプログラミングはMicrosoft特有の拡張機能をいくつか備えていますが、ストレートCです。 –

+0

"マイクロソフトは、Windows自体は主にC++で書かれていると言っています。私は文章が偽であり、MSがそう言っていないと確信しています。 –

+0

@David:いくつかのWebサイトでは、Windowsは主にC++で書かれたビルゲートを引用しています。しかし、私はソースを見たことはありませんでしたので、それは何らかの欺瞞かもしれません。 –

関連する問題