私は与えられた変数のメモリアドレスを64ビット(unsigned long)まで取得する簡単なプログラムを開発中です。現在のところこれはコードですが、何らかの理由でコンパイラが私のメソッドがローカル変数のアドレスを返すという警告を私に投げかけています。関数はローカル変数[-Wreturn-local-addr]のアドレスを返します
int main(int argc, char *argv[])
{
char* one = argv[1];
long memaddress = address(one);
}
uint64_t address(char * strin)
{
return (uint64_t) &strin;
}
この警告を緩和するにはどうすればよいですか、この警告が表示される原因は何ですか?
、なぜドンのようにそれを呼び出すことができます警告を回避するには、あなたがのために行くtをMACRO? –
@SouravGhosh:機能が動作するマクロは決して使用しないでください。しかし、それはどちらかというとナンセンスです。 – Olaf
@Olafだからあなたは何をするべきですか?私はアドレス機能にもっと多くの実装を計画していますが、私はできるだけシンプルに質問しました。アドレスをメインにどのように渡すのですか? – WasabiCannon