問題タブ [preprocessor-directive]
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.
objective-c - マクロコンパイラエラー:引数名が他の場所に表示される場合の「解析の問題」
iOSで簡単な「OK」ダイアログボックスを作成して表示するための簡単なマクロを作成してみました。
コードで使用しようとすると、次のようになります。
エラーが発生します:
解析の問題。期待される ']'
@
そして、エラーは直前の2番目を指しているよう"Message"
です。
ただし、マクロをコピーして貼り付けるだけでは、次のエラーは発生しません。
マクロでObjective-cコンストラクトを使用することに反対するものはありますか?それともそれは何か他のものですか?
c++ - プリプロセッサ ディレクティブでの変数の使用
プリプロセッサ ディレクティブ file.cpp で使用できるグローバル変数
また
ファイル.cpp
またはfile.cpp
proprocessor ディレクティブでの変数の使用を管理するルールは何ですか? 定数畳み込み可能な変数の場合、#if/#elif#else 指令で使用できますか?
c++ - プロジェクトに応じて異なる機能を定義する
現在、2つのc ++プロジェクトがあり、同じソースファイルとヘッダーファイルの多くを共有しています。それらの1つはゲームサーバーであり、もう1つはクライアントです。私のクラスのいくつかは、クライアントまたはサーバーに固有の関数を持っているため、そのうちの1つに対してのみコンパイルする必要があります。しかし、私はこれについてどうやって行くのかわかりません。これまでの私の試みは次のとおりです。
Client.h
#define IS_CLIENT
(main関数を含む)および#define IS_SERVER
Server.hで使用します。他のヘッダーがそれらに必要だったため、これは失敗し#include
ました(したがって、何かをコンパイルしたいときにすべてのヘッダーを変更する必要がありました)ここでCompileType.hを使用
#include "CompileType.h"
すると、IS_CLIENTまたはIS_SERVERのいずれかが定義されます。これは以前の方法以外の大きな改善ですが、コンパイルするたびにファイルを変更する必要があります。
#ifdef
使用された試みとその周辺の両方の試み#endif
は、.cppファイルの関数定義を選択します。
考えられる解決策は、可能であれば#define
、グローバル規模で何かを行うことです(したがって、すべてのソースファイルとヘッダーファイルに影響します)。IDEの(Code :: Blocks)設定には、まだ見たことのないものがあるかもしれません。
この問題についての洞察をいただければ幸いです。
c - 前処理段階と複数のファイル (基本)
3 つのファイルがあり、それをコンパイルしたいと考えています。
最初のファイルは app.c です
2 番目のファイルは sum.h です。
そして 3 番目のファイル sum.c
そして私はこれらの声明を書きます:
のコンテンツの多重定義を防ぐためsum.h
。
コンパイル中app.c
に、前処理段階に入り、次に前sum.c
処理段階に入ります。私の質問は、プリプロセッサが myapp の最後のファイルで定義されてsum.c
いることをどのように知っているかということです。SUM_H
各ソースファイルは、前処理段階とコンパイル段階に個別に入ると思います。
c-preprocessor - 定数文字列の編集/再定義:はい、矛盾を認識しています
私は定数変数の値を変更しようとしています。はい、私は自分がしていることの矛盾を認識していますが、私の狂気への方法があります。
4dmと呼ばれるC /C ++に非常によく似た言語で書いているのがわかりますが、関数以外のコードは許可されていないため、プリプロセッサコマンドを使用してこれを克服しようとしています。その理由は、私がその言語の専門化の形を達成できるようにするためです。この最初のステップは、定数文字列を編集できるようにすることです。
これは別の言語ですが、プリプロセッサはCおよびC++コンパイラとまったく同じように動作します。
以下は文字列を連結する簡単な試みですが、MY_STR is not defined
これを修正する方法についてのアイデアを示すコンパイルエラーが発生しますか?
c-preprocessor - プリプロセッサディレクティブ:#elifが定義されていませんか?
定数が定義されていないかどうかをチェックするプリプロセッサディレクティブはありますか?私は#ifndef
指令を知っていますが、指令も探してい#elif not defined
ます。#elif not defined
存在しますか?
これは私がそれを使用する方法です:
c-preprocessor - GUIライブラリ拡張を可能にするプリプロセッサマクロ機能
私が作成している独自の GUI ライブラリのコールバック関数を登録するプリプロセッサ マクロ関数を作成しようとしています。ライブラリは、前述のマクロ機能を使用して、サードパーティが簡単に拡張できるように設計されています。
私の問題:私のマクロ関数には、許可されていないと思われる他のプリプロセッサ ディレクティブが含まれています。ユーザーが独自のウィジェットを作成し、独自のコールバック関数をメイン GUI ライブラリに登録できるように、REGISTER_CUSTOM_CALLBACK_FUNCTION をコーディングしたいと考えています。私がやろうとしていることをまだ達成する方法はありますか?
各クロック ステップと呼ばれるメイン ウィンドウのコールバックは次のとおりです。
ユーザーが独自のウィジェットを作成し、独自のコールバック関数をメイン GUI ライブラリに登録できるように、REGISTER_CUSTOM_CALLBACK_FUNCTION をコーディングする方法はありますか?
c# - この vb コード行を C# に変換する際に問題が発生しました
C# に変換しようとしている vb.net プロジェクトがあります。MyWebExtension.vb という名前のファイルがあり、その中に次のコード行があります#If _MyType <> "Empty" Then
C#に変換してみた#if (_MyType != "Empty")
アプリケーションを実行すると、次のエラーが表示されます。
プリプロセッサ式が無効です。
変換で何が間違っていましたか?
c++ - 共有ファイルにプリプロセッサ ディレクティブを使用する
次のプリプロセッサ ディレクティブを含む .cpp ファイル (check.cpp と呼びましょう) があります。
check.cpp ファイルは 2 つの異なるプロジェクトで使用されています。(プロジェクトは同じフォルダーにあり、同じフォルダーにある同じ check.cpp ファイルを共有します)
1 つのプロジェクトでこのコードを実行し、他のプロジェクトではこのコードを実行しないようにします。
最終的に、ProjectA の場合、check.cpp は次のようになります。
ProjectB の場合、check.cpp は次のようになります。
プリプロセッサ ディレクティブを使用することは可能ですか、それとももっと簡単な方法がありますか?
私の考えは使用することでした
そして、それをプロジェクトの1つに入れ、他のプロジェクトには入れませんが、.cppファイルを機能させるには #define を含める必要があり、このファイルは共有されています...
何か案は?
c# - シンボル CONTRACTS_FULL の定義を解除するには?
[プロジェクト プロパティ] ページの [コード コントラクト] タブでコントラクト チェックを有効にすると、Visual Studio はCONTRACTS_FULLシンボルを自動的に定義します。
- C# 5.0 の概要 (518 ページ)
シンボルを無効/未定義にしたいのですが、プロジェクト設定のタブのConditional compilation symbols
フィールドに表示されません。Build
(コード コントラクトを完全に無効にすることには興味がありません! つまり、コントラクト チェックを に設定することNone
は解決策ではないということです)。
それが重要な場合、私がこれをやりたい理由は、私のリリース ビルドでは をスローしたいだけで、まったくContract.Requires<TException>
スローしたくないからですContractException
。
私が見つけた1つの「解決策」は#undef CONTRACTS_FULL
、各ファイルの最初の行に置くことです。これで修正されましたが、実際にそれを行うのは恐ろしいことです。
(ところで、今までVSは定義CONTRACTS_FULL
していなかったので、自分で定義する必要がありましたが、誤って設定が変更されたと思います)