このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。

オブジェクト ファイルまたは実行可能ファイル内にコメント レコードを配置します。 構文 #pragma comment( comment-type [ , "comment-string" ]) 解説 comment-type は、コメント レコードの種類を指定する定義済み識別子 (後述) の 1 つです。 省略可能な comment-string は、いくつかのコメントの種類で追加情報を指定する文字列リテラルです。 comment-string は文字列リテラルであるため、エスケープ文字、埋め込まれた引用符 (")、連結の使用は、文字列リテラルのすべての規則に従います。 compiler オブジェクト ファイル内にコンパイラの名前とバージョン番号を配置します。 このコメント レコードはリンカーには無視されます。 このレコードの種類で comment-string パラメーターを指定すると
モジュール定義または DEF ファイル (*.def) は、DLL のさまざまな属性を記述する 1 つ以上のモジュール文が含まれるテキスト ファイルです。 DLL の関数をエクスポートする __declspec(dllexport) キーワードを使わない場合は、DLL に DEF ファイルが必要です。 DEF ファイルには、最低限、以下のモジュール定義文を記述する必要があります。 ファイルの先頭には、必ず LIBRARY 文を記述します。 この文は、DEF ファイルが DLL に所属していることを識別します。 LIBRARY 文の引数には、DLL の名前を指定します。 リンカーは、この名前を DLL のインポート ライブラリに配置します。 EXPORTS 文には、DLL のエクスポート関数の名前と、オプションで序数値を指定します。 序数値を関数に割り当てるには、アット マーク (@) と数
他の .NET 言語とは異なり、Visual C++ には相互運用性サポートが備えられています。相互運用性サポートを使用すると、managed、unmanaged プラグマにより、マネージド コードとアンマネージド コードは同じアプリケーション内、また同じファイルでも共存できるようになります。 これにより、Visual C++ 開発者は、他のアプリケーションの動作を妨げることなく、既存の Visual C++ アプリケーションに .NET 機能を統合できます。 また、dllexport、dllimport を使用して、マネージド コンパイル単位からアンマネージド 関数を呼び出すこともできます。 関数パラメーターのマーシャリング方法を指定したり、DllImportAttribute を明示的に呼び出す際に指定できるその他の詳細設定を行ったりする必要がない場合は、暗黙の PInvoke を使用
String オブジェクトの文字にアクセスして、wchar_t* 文字列を受け取るアンマネージド関数に対する高パフォーマンスの呼び出しを行うことができます。 このメソッドにより、String オブジェクトの最初の文字への内部ポインターが生成されます。 このポインターは直接操作することも、固定して通常の wchar_t を必要とする関数に渡すこともできます。 例 PtrToStringChars を指定すると、内部ポインターである Char (別名 byref) が返されます。 そのため、ガベージ コレクションの対象になります。 ネイティブ関数に渡す場合を除き、このポインターを固定する必要はありません。 次のコードについて考えてみましょう。 ppchar は内部ポインターであるため固定は必要なく、そのポインターが指す文字列がガベージ コレクターによって移動されると、ppchar も更新されま
今回、バージョン1.0として一般提供を開始したC++拡張機能を利用することで、IntelliSenseスマートコード補完、デバッグ、リファクタリング、コードナビゲーションといったC++開発者向けのさまざまな機能を、Visual Studio Code上で利用できるようになる。 これらの機能は、さまざまなプラットフォーム、アーキテクチャ、コンパイラで利用可能なので、クロスコンパイルやリモート開発にも役立つ。 編集機能としては、IntelliSenseによるコード補完、パラメーター情報、クイック情報、メンバーリスト、すべての参照を検索、定義/宣言への移動、ピーク定義/宣言に対応したコードナビゲーション、シンボルの名前変更、コードのフォーマット、セマンティックのカラー化、Doxygenコメントドキュメントに対応している。 デバッガでは、ブレークポイントの設定、監視変数の設定、プログラムのステップ
C++ 言語には、固有のキャスト演算子がいくつかあります。 これらの演算子は、以前のスタイルの C 言語のキャストが持つあいまいさと危険性の一部を取り除くことを目的としています。 このような演算子を次に示します。 dynamic_cast ポリモーフィックな型の変換に使用します。 static_cast 非ポリモーフィックな型の変換に使用します。 const_cast const、volatile、および __unaligned 属性を削除するために使用します。 reinterpret_cast ビットの単純な再解釈に使用します。 safe_cast C++/CLI で検証可能な MSIL を生成するために使用します。 const_cast と reinterpret_cast の演算子には以前のスタイル キャストと同じ危険性があるため、これらは最後の手段として使用してください。 それでも
注意 このページにアクセスするには、承認が必要です。 サインインまたはディレクトリの変更を試すことができます。 このページにアクセスするには、承認が必要です。 ディレクトリの変更を試すことができます。 最新の C++ のほとんどのシナリオでは、論理エラーとランタイム エラーの両方を報告および処理する方法として、例外を使用することが推奨されます。 これは特に、エラーを検出した関数からエラーを処理するコンテキストを持つ関数までの間に、複数の関数がスタックに含まれる可能性がある場合に当てはまります。 例外は、エラーを検出して情報を呼び出し履歴に渡すコードに関する、正しく定義された正式な方法を提供します。 例外的なコードに例外を使用する プログラム エラーは、多くの場合、次の 2 つのカテゴリに分類されます。 プログラミングの間違いによって発生するロジック エラー。 たとえば、"範囲外のインデック
nullptr キーワードは、任意の生ポインター型に変換可能な型 std::nullptr_t の null ポインター定数を指定します。 ヘッダーを含めずにキーワード nullptr を使用できますが、コードで型 std::nullptr_t を使用する場合、ヘッダー <cstddef> を含めることにより定義を行う必要があります。 Note また nullptr キーワードは、マネージド コード アプリケーション用に C++/CLI でも定義されており、ISO 標準の C++ キーワードに対して互換性がありません。 マネージド コードをターゲットとする /clr コンパイラ オプションを使用してコードをコンパイルする可能性がある場合は、コンパイラでネイティブな C++ 解釈を使用することを保証する必要があるすべてのコード行で __nullptr を使用します。 詳細については、「nul
名前の前にアンダースコア (_) が付けられます。 名前の後に、アット マーク (@) と、引数リストのバイト数 (10 進数) が続きます。 したがって、int func( int a, double b ) として宣言された関数は次のように修飾されます: _func@12 /Gz コンパイラ オプションは、明示的に異なる呼び出し規則で宣言されていないすべての関数に対して __stdcall を指定します。 以前のバージョンとの互換性を確保するために、_stdcall は、コンパイラ オプション /Za (言語拡張機能の無効化) が指定されていない限り、__stdcall の同意語です。 __stdcall 修飾子を使って宣言された関数は、__cdecl を使って宣言された関数と同じ方法で値を返します。 ARM および x64 プロセッサでは、__stdcall はコンパイラによって受け
文字列化演算子 マクロ関数だけで使用できる、便利な演算子が用意されています そのひとつが文字列化演算子です マクロ関数で受け取った値に対して#記号をつけることで それを文字列、すなわちダブルクォーテーションをつけた状態に置換えます (プリプロセッサディレクティブであることを忘れないでください。あくまでソース上で置き換わるだけです) #define STRING(str) #str このマクロ関数は、仮引数の値をダブルクォーテーションをつけた状態に置き換えます 次のプログラムを実行してください #include <stdio.h> #define PRINT(str) printf(#str "\n") #define STRING(str) #str int main() { PRINT(Kitty on your lap); printf("%sバイトは1キロバイト" , STRING(
Windows API は、Windows オペレーティング システムの一部であるダイナミック リンク ライブラリ (DLL) です。 独自の同等のプロシージャを記述することが困難な場合は、これらを使用してタスクを実行します。 たとえば、Windows には FlashWindowEx という名前の関数が用意されていて、これを使用すると、アプリケーションのタイトル バーを交互に明るい色合いと暗い色合いにすることができます。 ご自身のコードで Windows API を使用する利点は、既に記述され、使用されるのを待っている便利な関数が多数含まれているため、開発時間を節約できることです。 欠点として、Windows API は処理が容易でなく、問題が発生したときに困難な状況になることがあります。 Windows API は、相互運用性の特別なカテゴリを表しています。 Windows API に
はじめに こんにちは、C++標準会員の江添です。 今日は普段から表に出ている、閉鎖的なゲーム開発では使われていない開発環境についての紹介をします。 今回紹介するのは、ISO国際標準規格プログラミング言語の「C++」です。 なんと表の世界では、国際標準のプログラミング言語は、コンパイラーベンダーやC++利用企業と行ったC++に利害関係を持つ多数の代表が国際標準規格を制定しているのです。当たり前でしょ? C++は以下のような特徴を持っています。 エラーに気づきやすい静的型付け言語 C++経験者が理解しやすい言語仕様 OSに依存しない移植性の高いC++実装 実行環境に依存しないC++規格準拠の挙動の定義 C/C++の関数・クラスに最初からバインドされている 今でもクローズな実装の詳細のわからないプログラミング言語がたくさんあり、それらを使うデメリットは数多くあります。 国際規格の言語を使うのは様
こんにちは、サイボウズ・ラボの光成です。 今回は小数を整数に丸める処理に関して、x86/x64における命令がどのように変わってきたかを紹介します。 C++における小数から整数への変換ルール まずC++における浮動小数点数型(float, double)を整数型(int, int64_tなど)に丸めるルールをおさらいしましょう。 floating-integral conversionsによるとその変換では小数点部分を取り除きます。 つまり1.5, 2.3, -2.9をintにキャストするとそれぞれ1, 2, -2になります。 なお整数型に入りきらないときの挙動は未定義です。 4種類の丸め規則 x86の浮動小数点数を扱うFPUは丸め処理のモードを4種類持ちます。 これはIEEE標準754の丸めモードの規則に従ったものです。 最近接丸め(round to nearest(even) : RN)
サイボウズ・ラボの光成です。 先日、社内で主にLinux上でC/C++を用いている開発者向けの講義をしました。 「こんなことができる」と知ってもらい、興味を持てば各自で勉強してもらおうと広く浅くツールを紹介しました。 gtags, ASan, Valgrind, addr2line, cppcheck, SystemTap, perfなどです。 興味があれば講義資料「C/C++プログラマのための開発ツール」をごらんください。 コンパイラオプション 受講者には新人やサイボウズ・ラボユースの学生もいたので基本的なところから紹介しました。 C/C++コンパイラを使うときはできるだけ警告オプションをつけるのが望ましいです。 警告が出るのは自分のコードの書き方に不備があることが多いからです。 gccやclangでは-Wall -Wextraは基本としてそれ以外にも有用なオプションがあります(C++用
C++1zから、標準ライブラリのいくつかの機能が非推奨となります。非推奨となった機能は将来のバージョンで削除される可能性がありますのでご注意ください。 std::iteratorクラス 自作イテレータを作るときに基本クラスとして使用するstd::iteratorクラスですが、これを使ってもイテレータを定義するのはあまり簡単になりませんでした。 このクラスを使用することによって問題がより複雑になってしまうケースもありましたので、非推奨となります。 Boost.Iteratorのようなイテレータを簡単に定義するための新たな仕組みは提供されませんので、標準ライブラリの範囲では、イテレータは最初から最後まで自分で定義することになります。 std::allocatorクラスのいくつかのメンバと、std::allocator<void> C++11からアロケータの中間インタフェースとデフォルト実装を提
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く