ここに私のシナリオがあります:変更したくないソースファイルがありますが、一部の文字列リテラルを他の値に置き換えたいと思っています。ここに例があります:C++では、文字列リテラルをマクロ名として使用できますか?
#define "oldString" "newString"
ここに私のシナリオがあります:変更したくないソースファイルがありますが、一部の文字列リテラルを他の値に置き換えたいと思っています。ここに例があります:C++では、文字列リテラルをマクロ名として使用できますか?
#define "oldString" "newString"
いいえ、それはできません。文字列の代わりにマクロを使用していた場合は、別の文字列を使用するようにマクロ定義を変更するのは簡単でした。
すばらしい、すばやい返信をいただきありがとうございます。この場合、ソースファイルは別の会社によって作成され、かなり頻繁に変更されるので、ファイルをドロップして(重要な変更がないことを確認してください)、このファイルを含めることを望みました。私のバックアップ計画は、Rob K.が上に示唆したように、文字列置換を行うためのスクリプトを書くことです。 – Freerobots
いいえ、#define
は、識別子に値を与えることができます。識別子には引用符を入れることはできません。
** **が機能していれば、ソースコードを直接変更しただけで、結果はすべての点で同じになります。あなたが行った変更を追跡できるように、ソースをバージョンコントロールに入れてください。あるいは、各コンパイルの前にソースをマッサージするスクリプトを書くこともできます。ソースをコンパイルしているので(デバッグ中に参照するだけではなく)、記述した方法で変更することは危険ではありません。 –