ハードウェアが取り付けられているArduinoボードのC++コードを書いています。コード内のさまざまな場所で、私はさまざまなハードウェアの値を持つ文字列を作成し、それをコマンドの一部としてシリアルに送信する必要があります。シリアル経由で送信された非常に特定のコマンドの一部である必要があるため、コマンド全体が準備できたら最初に構築して送信します。私はメインの文字列を宣言することによってこれを行うことが可能であった場合、私は思っていた参照渡し文字列/パスを返す
String dataString = constructDataString();
でそれを呼び出す私は
'String constructDataString()
{
// Set up data to transmit
String dataStr = String(var1);
dataStr += ",";
dataStr += String(var2);
dataStr += ",";
dataStr += String(var3);
dataStr += ",";
dataStr += String(var4);
dataStr += ",";
dataStr += String(var5);
return dataStr;
}'
以下の機能を経由して、それをやっている時点では
それを参照によって関数に渡し、関数が関数を直接変更できるようにします。私はこれをいくつかの方法で試しましたが、うまく動作するのに問題があります。私は以下のようなものを試しましたが、これに精通していない人はいなかったので、誰かが助けてくれることを期待していました。メイン
からプロトタイプ
void constructDataString (String* extString)
コール
String dataString =””;
String* dataStringPtr = & dataString;
constructDataString (dataStringPtr);
機能
void constructDataString (String* extString)
{
// Set up data to transmit
extString = String(var1);
extString += ",";
extString += String(var2);
extString += ",";
extString += String(var3);
extString += ",";
extString += String(var4);
extString += ",";
extString += String(var5);
}
こんにちはCantfindname、それを修正したこと、どうもありがとうございました。私は最近、非C++コードをたくさん書いているので、その部分を完全に忘れてしまった。また、nullパラメータの場合には参照を避けるのが一般的です。スタックに文字列を渡していないように、それを2番目の方法で行う方が効率的かどうか、私は知っていますか? – user1649972
ありがとう、ちょうどここに入力ミス:D – user1649972
私の知る限り、参考文献はほとんどがC++の構文糖であるため、コンパイルした後、両方の方法がまったく同じになり、スタック内にポインタを押すだけです – Cantfindname