タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

programmingとdevelopmentとC++に関するItisangoのブックマーク (63)

  • ターゲット プラットフォームにプロジェクトを構成する - Visual Studio (Windows)

    Visual Studio を使用すると、Arm64 やその他のプラットフォームなど、さまざまなプラットフォーム (プロセッサ アーキテクチャ) をターゲットにするようにアプリケーション ビルドを設定できます。 そのターゲット プラットフォーム用にビルドするために、プラットフォームで Visual Studio を実行する必要はありません。 Visual Studio での Arm64 のサポートの詳細については、 ARM 搭載デバイス上の Visual Studio を参照してください。 .NET 開発の 64 ビット プラットフォーム サポートについては、 64 ビット アプリケーションを参照してください。

    ターゲット プラットフォームにプロジェクトを構成する - Visual Studio (Windows)
    Itisango
    Itisango 2020/10/16
    「C++ projects use Win32 and x64, but the solution platforms use x86 and x64. When you choose x86 as the solution configuration, Visual Studio selects the Win32 platform for C++ projects. To see both project-level platform and solution-level platform settings... 」 #VisualStudio
  • comment pragma

    オブジェクト ファイルまたは実行可能ファイル内にコメント レコードを配置します。 構文 #pragma comment( comment-type [ , "comment-string" ]) 解説 comment-type は、コメント レコードの種類を指定する定義済み識別子 (後述) の 1 つです。 省略可能な comment-string は、いくつかのコメントの種類で追加情報を指定する文字列リテラルです。 comment-string は文字列リテラルであるため、エスケープ文字、埋め込まれた引用符 (")、連結の使用は、文字列リテラルのすべての規則に従います。 compiler オブジェクト ファイル内にコンパイラの名前とバージョン番号を配置します。 このコメント レコードはリンカーには無視されます。 このレコードの種類で comment-string パラメーターを指定すると

    comment pragma
  • DEF ファイルを使った DLL からのエクスポート

    モジュール定義または DEF ファイル (*.def) は、DLL のさまざまな属性を記述する 1 つ以上のモジュール文が含まれるテキスト ファイルです。 DLL の関数をエクスポートする __declspec(dllexport) キーワードを使わない場合は、DLL に DEF ファイルが必要です。 DEF ファイルには、最低限、以下のモジュール定義文を記述する必要があります。 ファイルの先頭には、必ず LIBRARY 文を記述します。 この文は、DEF ファイルが DLL に所属していることを識別します。 LIBRARY 文の引数には、DLL の名前を指定します。 リンカーは、この名前を DLL のインポート ライブラリに配置します。 EXPORTS 文には、DLL のエクスポート関数の名前と、オプションで序数値を指定します。 序数値を関数に割り当てるには、アット マーク (@) と数

    DEF ファイルを使った DLL からのエクスポート
  • C++ Interop (暗黙の PInvoke) の使用

    他の .NET 言語とは異なり、Visual C++ には相互運用性サポートが備えられています。相互運用性サポートを使用すると、managed、unmanaged プラグマにより、マネージド コードとアンマネージド コードは同じアプリケーション内、また同じファイルでも共存できるようになります。 これにより、Visual C++ 開発者は、他のアプリケーションの動作を妨げることなく、既存の Visual C++ アプリケーションに .NET 機能を統合できます。 また、dllexport、dllimport を使用して、マネージド コンパイル単位からアンマネージド 関数を呼び出すこともできます。 関数パラメーターのマーシャリング方法を指定したり、DllImportAttribute を明示的に呼び出す際に指定できるその他の詳細設定を行ったりする必要がない場合は、暗黙の PInvoke を使用

    C++ Interop (暗黙の PInvoke) の使用
  • 方法: System::String の文字にアクセスする

    String オブジェクトの文字にアクセスして、wchar_t* 文字列を受け取るアンマネージド関数に対する高パフォーマンスの呼び出しを行うことができます。 このメソッドにより、String オブジェクトの最初の文字への内部ポインターが生成されます。 このポインターは直接操作することも、固定して通常の wchar_t を必要とする関数に渡すこともできます。 例 PtrToStringChars を指定すると、内部ポインターである Char (別名 byref) が返されます。 そのため、ガベージ コレクションの対象になります。 ネイティブ関数に渡す場合を除き、このポインターを固定する必要はありません。 次のコードについて考えてみましょう。 ppchar は内部ポインターであるため固定は必要なく、そのポインターが指す文字列がガベージ コレクターによって移動されると、ppchar も更新されま

    方法: System::String の文字にアクセスする
  • Visual Studio Code向けC++拡張機能、一般提供開始

    今回、バージョン1.0として一般提供を開始したC++拡張機能を利用することで、IntelliSenseスマートコード補完、デバッグ、リファクタリング、コードナビゲーションといったC++開発者向けのさまざまな機能を、Visual Studio Code上で利用できるようになる。 これらの機能は、さまざまなプラットフォーム、アーキテクチャ、コンパイラで利用可能なので、クロスコンパイルやリモート開発にも役立つ。 編集機能としては、IntelliSenseによるコード補完、パラメーター情報、クイック情報、メンバーリスト、すべての参照を検索、定義/宣言への移動、ピーク定義/宣言に対応したコードナビゲーション、シンボルの名前変更、コードのフォーマット、セマンティックのカラー化、Doxygenコメントドキュメントに対応している。 デバッガでは、ブレークポイントの設定、監視変数の設定、プログラムのステップ

    Visual Studio Code向けC++拡張機能、一般提供開始
  • キャスト演算子

    C++ 言語には、固有のキャスト演算子がいくつかあります。 これらの演算子は、以前のスタイルの C 言語のキャストが持つあいまいさと危険性の一部を取り除くことを目的としています。 このような演算子を次に示します。 dynamic_cast ポリモーフィックな型の変換に使用します。 static_cast 非ポリモーフィックな型の変換に使用します。 const_castconst、volatile、および __unaligned 属性を削除するために使用します。 reinterpret_cast ビットの単純な再解釈に使用します。 safe_cast C++/CLI で検証可能な MSIL を生成するために使用します。 const_cast と reinterpret_cast の演算子には以前のスタイル キャストと同じ危険性があるため、これらは最後の手段として使用してください。 それでも、

    キャスト演算子
    Itisango
    Itisango 2020/08/06
    「C++ 言語には、固有のキャスト演算子がいくつかあります。」
  • C++/CLI, Finalize and Dispose

  • 例外とエラー処理に関する最新の C++ のベスト プラクティス

    最新の C++ のほとんどのシナリオでは、論理エラーとランタイム エラーの両方を報告および処理する方法として、例外を使用することが推奨されます。 これは特に、エラーを検出した関数からエラーを処理するコンテキストを持つ関数までの間に、複数の関数がスタックに含まれる可能性がある場合に当てはまります。 例外は、エラーを検出して情報を呼び出し履歴に渡すコードに関する、正しく定義された正式な方法を提供します。 例外的なコードに例外を使用する プログラム エラーは、多くの場合、次の 2 つのカテゴリに分類されます。 プログラミングの間違いによって発生するロジック エラー。 たとえば、"範囲外のインデックス" エラーです。 プログラマが制御できる範囲を超えるランタイム エラー。 たとえば、"ネットワーク サービスを使用できません" というエラーです。 C スタイル プログラミングと COM では、特定の

    例外とエラー処理に関する最新の C++ のベスト プラクティス
  • iostream (C++ ライブラリ・リファレンス)

  • nullptr

    nullptr キーワードは、任意の生ポインター型に変換可能な型 std::nullptr_t の null ポインター定数を指定します。 ヘッダーを含めずにキーワード nullptr を使用できますが、コードで型 std::nullptr_t を使用する場合、ヘッダー <cstddef> を含めることにより定義を行う必要があります。 Note また nullptr キーワードは、マネージド コード アプリケーション用に C++/CLI でも定義されており、ISO 標準の C++ キーワードに対して互換性がありません。 マネージド コードをターゲットとする /clr コンパイラ オプションを使用してコードをコンパイルする可能性がある場合は、コンパイラでネイティブな C++ 解釈を使用することを保証する必要があるすべてのコード行で __nullptr を使用します。 詳細については、「nul

    nullptr
  • __stdcall

    /Gz コンパイラ オプションは、明示的に異なる呼び出し規則で宣言されていないすべての関数に対して __stdcall を指定します。 以前のバージョンとの互換性を確保するために、_stdcall は、コンパイラ オプション /Za が指定されていない限り、 の同意語です。 __stdcall 修飾子を使って宣言された関数は、__cdecl を使って宣言された関数と同じ方法で値を返します。 ARM および x64 プロセッサでは、__stdcall はコンパイラによって受け入れられるか無視されます。ARM および x64 アーキテクチャでは規約によって可能な限り引数はレジスタで渡され、その後の引数はスタックで渡されます。 静的でないクラス関数がアウトオブラインで宣言されている場合、アウトオブラインの宣言で呼び出し規約の修飾子を指定する必要はありません。 つまり、クラスの静的でないメンバー

    __stdcall
    Itisango
    Itisango 2020/07/16
    「__stdcall 呼び出し規約は、Win32 API 関数を呼び出すために使用されます。 呼び出し先がスタックを消去するので、コンパイラは関数を作成し vararg __cdecl ます」「関数プロトタイプが必要」 #dotNet
  • C++でうっかり無限ループを書くと鼻から悪魔が出てくる - Qiita

    C++で副作用のない無限ループを書くと未定義動作になります。 「未定義動作」というのは口に出すだけでC++プログラマーを震え上がらせる力を持った言葉です。「鼻から悪魔が出てくる」という言葉で説明されるように、未定義動作を含むコードを実行した結果は何も保証することができず、バグの発見やデバッグすら困難にさせます。未定義動作下においてはコンパイラの気分によってコード片が消え、trueとfalseが同時に成立し、タイムトラベルを引き起こします1。 そのためC++ではうっかり未定義動作が埋め込まれないよう注意が払われるのが普通です。 さて、以下のC++のコードは未定義動作を引き起こします。 下の例は実際にclang/LLVMで最適化を有効にしてコンパイルするとでたらめな値を返す関数ができました。 この話をしたところ、何人かに驚かれたり異論を受け取ったりしたので、この話題について少しまとめてみました

    C++でうっかり無限ループを書くと鼻から悪魔が出てくる - Qiita
  • チュートリアル : Windows API の呼び出し

    Windows API は、Windows オペレーティング システムの一部であるダイナミック リンク ライブラリ (DLL) です。 独自の同等のプロシージャを記述することが困難な場合は、それらを使用してタスクを実行します。 たとえば、Windows には FlashWindowEx という名前の関数が用意されています。これにより、アプリケーションのタイトル バーを明るい網かけと濃色の間で交互に表示できます。 コードで Windows API を使用する利点は、既に記述され、使用されるのを待っている便利な関数が多数含まれているため、開発時間を節約できることです。 欠点は、Windows API の操作が難しく、問題が発生した場合に容赦できないことです。 Windows API は、相互運用性の特別なカテゴリを表します。 Windows API はマネージド コードを使用せず、組み込みのタ

  • 国際標準規格の紹介 〜ISO国際標準規格プログラミング言語C++について〜

    はじめに こんにちは、C++標準会員の江添です。 今日は普段から表に出ている、閉鎖的なゲーム開発では使われていない開発環境についての紹介をします。 今回紹介するのは、ISO国際標準規格プログラミング言語の「C++」です。 なんと表の世界では、国際標準のプログラミング言語は、コンパイラーベンダーやC++利用企業と行ったC++に利害関係を持つ多数の代表が国際標準規格を制定しているのです。当たり前でしょ? C++は以下のような特徴を持っています。 エラーに気づきやすい静的型付け言語 C++経験者が理解しやすい言語仕様 OSに依存しない移植性の高いC++実装 実行環境に依存しないC++規格準拠の挙動の定義 C/C++の関数・クラスに最初からバインドされている 今でもクローズな実装の詳細のわからないプログラミング言語がたくさんあり、それらを使うデメリットは数多くあります。 国際規格の言語を使うのは様

  • x86/x64における小数から整数への丸め処理命令の変遷 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、サイボウズ・ラボの光成です。 今回は小数を整数に丸める処理に関して、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)

    x86/x64における小数から整数への丸め処理命令の変遷 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • Visual Studio 2015でLinuxをターゲットにした開発が容易に

    あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

    Visual Studio 2015でLinuxをターゲットにした開発が容易に
  • C/C++プログラマのための開発ツール - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 先日、社内で主にLinux上でC/C++を用いている開発者向けの講義をしました。 「こんなことができる」と知ってもらい、興味を持てば各自で勉強してもらおうと広く浅くツールを紹介しました。 gtags, ASan, Valgrind, addr2line, cppcheck, SystemTap, perfなどです。 興味があれば講義資料「C/C++プログラマのための開発ツール」をごらんください。 コンパイラオプション 受講者には新人やサイボウズ・ラボユースの学生もいたので基的なところから紹介しました。 C/C++コンパイラを使うときはできるだけ警告オプションをつけるのが望ましいです。 警告が出るのは自分のコードの書き方に不備があることが多いからです。 gccやclangでは-Wall -Wextraは基としてそれ以外にも有用なオプションがあります(C++

    C/C++プログラマのための開発ツール - Cybozu Inside Out | サイボウズエンジニアのブログ
  • C++1z 古くなった機能を非推奨化 - Faith and Brave - C++で遊ぼう

    C++1zから、標準ライブラリのいくつかの機能が非推奨となります。非推奨となった機能は将来のバージョンで削除される可能性がありますのでご注意ください。 std::iteratorクラス 自作イテレータを作るときに基クラスとして使用するstd::iteratorクラスですが、これを使ってもイテレータを定義するのはあまり簡単になりませんでした。 このクラスを使用することによって問題がより複雑になってしまうケースもありましたので、非推奨となります。 Boost.Iteratorのようなイテレータを簡単に定義するための新たな仕組みは提供されませんので、標準ライブラリの範囲では、イテレータは最初から最後まで自分で定義することになります。 std::allocatorクラスのいくつかのメンバと、std::allocator<void> C++11からアロケータの中間インタフェースとデフォルト実装を提

    C++1z 古くなった機能を非推奨化 - Faith and Brave - C++で遊ぼう
  • Embarcadero、C/C++統合開発環境「C++Builder Starter」を期間限定で無償公開

    Embarcadero、C/C++統合開発環境「C++Builder Starter」を期間限定で無償公開