問題タブ [void-pointers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
5099 参照

c++-cli - C++/CLI の void* から Object^ へ

C# で参照される .dll として最終的に使用するために、多数の .h および .lib ファイルをネイティブ C++ からマネージド C++ にラップする作業を行っています。

一部のネイティブ C++ 関数の戻り値の型は void* です。呼び出し元のコードに値を返すときにこれを処理する方法がわかりません。例: C# アプリが私の dll ラッパーを呼び出す場合、ネイティブ呼び出しから何を返しますか:

私は現在、一般的な System::Object^ でリターンをボックス化しようとしていますが、うまくいきません。これはラッパーでの呼び出しです。

誰でも解決策を提供できますか?

0 投票する
6 に答える
12021 参照

c - C: void * 経由で戻る関数

Java から来て、次の戻り値を許可する Void の使用に混乱しています。

これは、割り当てられたメモリのチャックへのポインタを返していますか?

0 投票する
7 に答える
71775 参照

objective-c - Objective-C: id と void の違い *

idとはどう違いvoid *ますか?

0 投票する
5 に答える
25004 参照

c - void ポインターがある場合、どのように int をそれに入れますか?

私は任意の値の配列を持っているので、それを void ポインターの配列として定義したので、あらゆる種類の情報 ( int、文字配列など) を指すことができます。ただし、実際に を割り当てるにはどうすればよいintですか?

たとえば、次の初期化を行います。

私の直感はこれを考えるでしょうが、これはコンパイルエラーを引き起こします:

また&x、を使用することも考えましたが、ローカル変数のアドレスを取得し、(私の理解では) プロシージャを終了した後にクリアされます。では、ローカル変数がある場合x、それを void ポインター型の変数に正しく入れるにはどうすればよいでしょうか?

0 投票する
3 に答える
8069 参照

c - エラー:「void(*)(...)」から「void(*)()」への無効な変換

gcc 4.0.1ビルド5370、XCode2.5を使用するMacでこの問題が発生します。コードスニペットは次のとおりです。

宣言された関数があり、2番目のパラメーターが問題を引き起こします:

このように呼んでいます:

3行目にエラーが発生します。'void func(void)'はgcc4.0.1の'void func()'とは異なるように見えます

gccスイッチまたはgccアップデートについてのアイデアは役に立ちますか?本座Bさん、ありがとうございました。

0 投票する
18 に答える
153670 参照

c++ - エラー:「void*」から「int」にキャストすると精度が失われます

void* myFcn(void* arg)pthreadの開始点として使用されるプロトタイプを使用した関数があります。後で使用するために、引数をintに変換する必要があります。

コンパイラ(GCCバージョン4.2.4)は次のエラーを返します。

これをキャストする適切な方法は何ですか?

0 投票する
1 に答える
771 参照

c# - Win32FileWriteの実装

私はこれを署名付きのWrite(..)メソッドを介して実装しています:

これを見て学んだように(読み取りの対応物の使用について説明します)、バッファーの書き込み/読み取りが一度に実行されない可能性があるため、コードにwhileループを実装する必要があります。ここから問題が始まります。

バイト*がバッファーのパラメーターとして受け入れられるリンクされた読み取りの例とは異なり、void *を受け入れるようにC#メソッドの署名を保持したい場合。

これは、WriteFileを1回パスした後、まだ書き込まれていないバッファの先頭にvoid*を移動する必要があることを意味します。書き込まれたバイト数を保持するuintでvoid*をインクリメントするだけでは、どうやらこれを行うことはできません... void *には所定のサイズがないため、インクリメントできないことは理解していますが、どうすれば達成できるのでしょうか。私はやろうとしています。

0 投票する
2 に答える
1072 参照

c# - ポインタ演算と C# コンパイラ

学習のために、私は最近、Win32 WriteFile を使用する既存のアセンブリ (Reflector を使用) を調べました。実装は次のとおりです。

}

実際に問題があるのは最後の 2 行です... 1 つには、コンパイラは、uint を void* にキャストできないと不平を言います。さらに、既知のサイズではないため、 void* で += または + を使用することはできません。

上記のコードは機能しますが、最後の数行は次のようにコンパイルされます。

理由がわかりません。コンパイラがこのように動作する理由を知りたいです。

  1. このようなキャストを生成するのはなぜですか (また、ユーザーが作成したコードでこれを行うことが受け入れられないのはなぜですか)?
  2. 最初の例の void* の += 演算子はどうなっていますか? buffer += (void*)wrtn where buffer is void* ???? を生成した元のコード コードは何ですか?
0 投票する
7 に答える
20841 参照

c++ - C++ Void ポインターの型を調べる

ちょっとした質問があります。C++ ポインターの型を調べるにはどうすればよいですか?

私はよくコンソール プログラムで小さな関数を使用して入力を収集します。これは次のようになります。

void ポインターを使用してジェネリック フォームを作成したいのですが、void ポインターを作成することはできません。

0 投票する
4 に答える
6010 参照

c - C: ディープ コピー - void ポインターを持つ構造体

次の構造体があります

void ポインターを含む構造体のディープ コピーを行うことは可能ですか? dataポインタが指しているバイト数がわからないと思いますか?したがって、指定されたバイト数をmallocしてmemcpyを実行することはできません。私は正しいですか?