タグ

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

  • 関連タグはありません

タグの絞り込みを解除

ProgrammingとC++とc++に関するItisangoのブックマーク (183)

  • 名前空間 (C++)

    名前空間は、その内部にある識別子 (型、関数、変数などの名前) のスコープを定める宣言領域です。 名前空間は、コードを論理グループにまとめるため、およびコード ベースに複数のライブラリが含まれる場合に特に発生する名前の競合を回避するために使用されます。 名前空間スコープのすべての識別子は互いどうしを修飾なしで参照できます。 名前空間の外の識別子がメンバーにアクセスするときには、識別子ごとに完全修飾名を使用するか (std::vector<std::string> vec; など)、単一の識別子のために using 宣言を使用するか (using std::string)、名前空間内のすべての識別子のために using ディレクティブを使用する (using namespace std;) ことができます。 ヘッダー ファイル内のコードは、常に完全修飾された名前空間の名前を使用する必要があり

    名前空間 (C++)
    Itisango
    Itisango 2020/10/27
    「using ディレクティブをヘッダー ファイル (*.h) に配置することは避けてください」「デバッグが非常に困難な名前の隠蔽の問題や名前の競合の問題を引き起こすことがあるためです」 #dotNet
  • 名前空間 namespace の追加方法について

    注意 このページにアクセスするには、承認が必要です。 サインインまたはディレクトリの変更を試すことができます。 このページにアクセスするには、承認が必要です。 ディレクトリの変更を試すことができます。 質問 2008年9月17日水曜日 17:27 VS2008 standard で C++ のターミナルアプリケーションを作成しようと project を作成しました。 Math.Abs() を使いたいと思い using System; を宣言したところ error C2871: 'System' : この名前を指定された名前空間は存在しません。 と出たのでエラー番号から検索しましたが、具体的に VS2008 から何を追加してやれば良い のか調べきれませんでした。 ... #include <complex> ... using std; using System; ... int Conve

    名前空間 namespace の追加方法について
    Itisango
    Itisango 2020/10/27
    「プロジェクトのプロパティにて「共通言語ランタイム サポート」という項目を「共通言語ランタイム サポート (/clr)」に設定して下さい」 #dotNet
  • [リンカー] プロパティ ページ

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 以下のプロパティは、[プロジェクト]>[プロパティ]>[構成プロパティ]>[リンカー] の下にあります。 リンカーについて詳しくは、「リンカーを呼び出す CL」と「リンカー オプション」をご覧ください。 [全般] プロパティ ページ 出力ファイル /OUT オプションを指定すると、リンカーによって作成されるプログラムの既定の名前と場所がオーバーライドされます。 進行状況の表示 リンカーの進行状況メッセージを出力します Choices [設定なし] - 詳細情報はありません。 [詳細情報をすべて表示] - すべての進行状況メッセージを表示します。 [検索したライブラリ] - 検索したライブラリのみを示す進行状況

    [リンカー] プロパティ ページ
    Itisango
    Itisango 2020/10/26
    「出力ファイル /OUTオプションは、リンカーが作成するプログラムの既定の名前と場所をオーバーライドします。進行状況の表示 リンカーの進行状況メッセージを印刷します」#Windows
  • C# string(文字列)からバイト型配列 byte[] (バイナリ) に変換するコードと実行結果 | iPentec

    バイナリファイルへの書き込みや通信などの用途で、文字列からバイト型配列 byte[]に変換したいことがあります。この記事では文字列からバイト型配列(byte[])への変換コードを紹介します。 概要 C#では文字列はunicodeとして定義されているため、文字列をbyte[]配列にコピーするためには、エンコードの指定(SJIS, JIS, EUC, UTF-8など)も必要になります。C#では System.Text.Encodingクラスが用意されており、このクラスを用いて文字列をエンコードを指定して、byte[]配列型に変換できます。 文字列(string)型からbyte[]配列型に変換する場合はGetBytes()メソッドを用います。 コード例 private void button1_Click(object sender, EventArgs e) { string text = "

    C# string(文字列)からバイト型配列 byte[] (バイナリ) に変換するコードと実行結果 | iPentec
    Itisango
    Itisango 2020/10/26
    How to convert string to byte[]. #dotNet
  • C++/CLI による .NET プログラミング

    既定で、Visual Studio 2015 で作成された CLR プロジェクトは .NET Framework 4.5.2 を対象とします。 新しいプロジェクトを作成する際には、.NET Framework 4.6 をターゲットにできます。 [新しいプロジェクト] ダイアログの上部中央にあるドロップダウン リストでターゲット フレームワークを変更します。 既存のプロジェクトのターゲット フレームワークを変更するには、プロジェクトを閉じて、プロジェクト ファイル (.vcxproj) を編集し、ターゲット フレームワークのバージョンの値を 4.6 に変更します。 変更は、プロジェクトを次回開くときに有効になります。 Visual Studio 2017 では、既定のターゲット .NET Framework は 4.6.1 です。 Framework バージョン セレクターは、[新しいプロジ

    C++/CLI による .NET プログラミング
    Itisango
    Itisango 2020/10/16
    "To change the target framework for an existing project, close the project, edit the project file (.vcxproj), and change the value of the Target Framework Version to 4.6. Next time you open the project, the settings will take effect." #dotNet
  • Solution platform x86 vs Win32

    Itisango
    Itisango 2020/10/16
    "If you have a normal project it will generate x86/x64 code. A smart device project is a different story." "86 is for Intel/AMD's 32 bit chip set. Win32 can support other chipsets, such as ARM in a Windows Mobile project." #VisualStudio
  • プロジェクトを構成してターゲット プラットフォームを設定する - Visual Studio (Windows)

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

    プロジェクトを構成してターゲット プラットフォームを設定する - 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_cast const、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++ のベスト プラクティス
  • 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

    名前の前にアンダースコア (_) が付けられます。 名前の後に、アット マーク (@) と、引数リストのバイト数 (10 進数) が続きます。 したがって、int func( int a, double b ) として宣言された関数は次のように修飾されます: _func@12 /Gz コンパイラ オプションは、明示的に異なる呼び出し規則で宣言されていないすべての関数に対して __stdcall を指定します。 以前のバージョンとの互換性を確保するために、_stdcall は、コンパイラ オプション /Za (言語拡張機能の無効化) が指定されていない限り、__stdcall の同意語です。 __stdcall 修飾子を使って宣言された関数は、__cdecl を使って宣言された関数と同じ方法で値を返します。 ARM および x64 プロセッサでは、__stdcall はコンパイラによって受け

    __stdcall
    Itisango
    Itisango 2020/07/16
    「__stdcall 呼び出し規約は、Win32 API 関数を呼び出すために使用されます。 呼び出し先がスタックを消去するので、コンパイラは関数を作成し vararg __cdecl ます」「関数プロトタイプが必要」 #dotNet
  • 64ビットになると何が変わる?――64ビットプログラミングのデータモデル

    64ビットになると何が変わる?――64ビットプログラミングのデータモデル:64ビットコンピューティング最前線(1/2 ページ) システムが64ビットになるとプログラム的には何が変わるのか。3つの基的な64ビットプログラミングデータモデルを取り上げながら、理解を深めていこう。 64ビットプログラミングで何が変わる? システムが64ビットになるとプログラム的には何が変わるのでしょうか。 まず、大きな変更点として、ポインタの幅(サイズ)が64ビットになります。このことで、より幅広いアドレスをカバーできるようになります。そもそも、ポインタのサイズが32ビットのままなら64ビットに拡張される意味がありませんし、これは当然といえば当然のことかもしれません。 通常、ポインタはポインタとしてしか使用されることはありませんし、intとポインタとで代入を行うといったトリッキーなことをしていないかぎり、そのま

    64ビットになると何が変わる?――64ビットプログラミングのデータモデル
  • いやなブログ: Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか

    Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか 通常、Linux の共有ライブラリを作るときは各 .c ファイルを PIC (Position Independent Code) となるようコンパイルします。しかし、実は PIC でコンパイルしなくても共有ライブラリは作れます。それでは PIC にする意味はあるのでしょうか。 さっそく実験してみます。 int func () { printf(""); printf(""); printf(""); } PIC でコンパイルするには gcc に -fpic または -fPIC を渡します。-fpic の方が小さく高速なコードを生成する可能性がありますが、プロセッサによっては -fpic で生成できる GOT (Global Offset Table) のサイズに制限があります。一方、-fPIC はどのプロセッサで