問題タブ [void]

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 に答える
636 参照

c - void ポインタと ffcall ライブラリ

私は ffcall (具体的には ffcall の avcall パッケージ) ライブラリを使用して、可変引数関数にパラメーターを動的にプッシュしています。つまり、私たちは持っています

ユーザーから取得した値を使用してこの関数を呼び出します。これを行うには、関数の avcall バージョンを作成します。

今、私が avcall を使用している関数は次のとおりです。

そして、それは次のように使用されます:

しかし、avcall を使用してこの関数から一定量の値を取得したいのですが、この情報を事前に知りません。したがって、void ポインターの配列を作成し、タイプに応じてスペースを malloc するだけだと考えました。

そしてav_read_row、次のとおりです。

大量のメモリ破損エラーが発生しており、ここで行っていることが気に入らないようです。私がこれをした方法に何か問題があることを見つけることができませんか?現時点では、av_read_rowwhile ループ内で malloc を解放しようとすると気に入りません。もしあれば、誰かが私が間違っていることを見ることができますか?

ありがとう

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

c++ - STL 文字列と STL ベクトルを void* に変換しますか?

任意のデータをシリアル化し、メタデータとして特殊な画像形式に保存するために使用する C++ コードを入手しました。

とにかく、それはボイド*と見なされます。簡単な memcpy を実行できますか? または、これを行うより良い方法はありますか?

0 投票する
11 に答える
6680 参照

c - 汎用性と型安全性? C で void* を使用する

オブジェクト指向 (C#、Java、Scala) 出身の私は、コードの再利用と型安全性の両方の原則を非常に高く評価しています。上記の言語の型引数はその役割を果たし、型安全でコードを「無駄」にしない汎用データ構造を有効にします。

C に行き詰まるにつれて、妥協しなければならないことを認識しており、それが正しいものであってほしいと思っています。データ構造のvoid *各ノード/要素に があり、型の安全性が失われるか、使用する型ごとに構造とコードを書き直す必要があります。

コードの複雑さは明らかな要因です。配列または連結リストを繰り返し処理することは簡単で*next、構造体に a を追加することは余分な労力ではありません。このような場合、構造とコードを再利用しようとしないことは理にかなっています。しかし、より複雑な構造の場合、答えはそれほど明白ではありません。

モジュール性とテスト容易性もあります。構造を使用するコードから型とその操作を分離すると、テストが容易になります。逆もまた真です。他のことをしようとしている間に構造体に対するコードの反復をテストすると、面倒になります。

それで、あなたのアドバイスは何ですか?void *再利用または型安全性と重複コードはありますか? 一般原則はありますか?適合しない場合、オブジェクト指向を手続き型に強制しようとしていますか?

編集: C++ をお勧めしないでください、私の質問は C についてです!

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

f# - ユニットとは対照的にボイド

これら2つのプログラミング概念の違いを理解したいと思います。前者はデータ型がないことを表し、後者では型は存在しますが情報はありません。さらに、ユニットは関数型プログラミングの理論的基盤に由来することを認識していますが、ユニットプリミティブのユーザビリティが何であるかをまだ理解できません(たとえば、F#プログラムで)。

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

void - 主な C / C++ 仕様は何ですか

「C/C++ プログラマー」と、言及されていない/存在する「C/C++ 言語」との誤解があり、最終的に質問が閉じられた後、私はそれを無効にすることにしました。

私はそれを削除することに投票し、質問を 2 つ (C 言語の仕様、コンパイラとそのバージョンの差分、および C++ 言語の仕様、コンパイラとそのバージョンの差分) に分割する予定でしたが、(不適切な形式の) 回答を含む質問が判明しました削除できません。

それは私のSOの経験にとって大きな転換点でした...間違って閉じられた不正解の質問を改革することはできません...痛い。

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

c++ - C ++ /SDL'void*'はポイントツーオブジェクトタイプではありません

私はC++を初めて使用し、C ++とSDLを使用してテストを行おうとしていますが、SDLには次の関数があります。

作成されたタイマーのコールバックを渡すことができます。しかし、どうやらこれは私のインスタンスを* voidに変換するので、静的なupdateメソッドで再度取得することはできません。興味深いのですが、SDL_AddTimeは非静的コールバック関数では機能しません。

さて、私の問題は、void * param引数を介してパブリックメソッドrenderを呼び出そうとすると、オブジェクト型へのポインタではないことについて不平を言うことです...

SDL_AddTime関数を制御できず、必要なパラメーターを渡す必要があるため、updateメソッド内でCharacterインスタンスを再度取得する方法はありますか?

ありがとう

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

c# - C# ラムダ式は void を返すことができますか?

私は次の方法を持っています.voidがここでは無効であるというコンパイラエラーがあるため、以下の default(void) に入れることができるものがあるかどうかを知りたいです:

三項演算子の代わりに if-else ステートメントを使用できること (または、ダミー メソッドを呼び出して void を返すことができること) に気付きました。また、Select 拡張メソッドは、void を返すラムダを好みません。型を推測できないと言っているようですが、もちろん、次のように型を指定すると、次のいずれかになります。

言語設計の観点から、void または void である変数のデータ型を返すことができる式がない理由に興味がありました。

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

c++ - std:bad_allocを回避するために画像データに使用するデータ型は何ですか?

画像ライブラリを開発していて、画像データデータ型に苦労しています

画像は可変のデータ型(ピクセルあたり8ビット、ピクセルあたり16ビット)を持つことができるので、画像データポインタを

ただし、void *は、次のような醜いポインタ演算を含むあらゆる種類の厄介さにつながります。

別の方法に渡すと、何かがおかしいのではないかと思います

新しいリターンstd::bad_alloc

ここで、void *がbad_allocに直接つながるわけではないことに同意する必要がありますが、ここで何か問題があると確信しています。ヒントはありますか?

編集:

CImageはほとんど何もしません

サイズはx:746、y:325です

0 投票する
9 に答える
7200 参照

java - Javaでvoid型を宣言する代わりにブール値を返しますか?

void を宣言するのではなく、操作が成功したことを示すために、メソッド シグネチャでブール値を返すことに関して厳格な規則はありますか? 呼び出しメソッドのより重要な操作については、操作が完了したかどうかを知りたいので、問題をログに記録できることがわかりました。これはブール値の「不適切な」使用ですか?

0 投票する
12 に答える
843 参照

c - C: サブ関数から void を返すことと double * を返すこと

私は、C で一般的なデータ処理を高速化しようと取り組んでいます。次の形式のサブルーチンをいくつか作成しました。

このスタイルは読みやすく使いやすいので気に入っていますが、よく次のように呼んでいます。

代わりに void サブ関数を次のように使用すると、コードが高速になります (メモリ リークが防止される可能性があります)。

更新 1: 実行可能ファイルで valgrind --leak-check=full を実行しましたが、最初の方法を使用したメモリ リークはないようです。ただし、実行可能ファイルは、このフォームで作成したすべてのサブルーチンを含むライブラリにリンクしているため、ライブラリからのリークをキャッチできない可能性があります。

メモリを解放するラッパーをどのように作成するか、** が実際に何をするか、またはポインターへのポインターが何であるかについて知りたいので、 ** ルートの使用を避けています (それとおそらく私はそれをやった私のMacではコンパイルされなかったので間違っています)。

現在のサブルーチンの 1 つを次に示します。

私がここで得たアドバイスから、より良い方法のように思えます:

電話: