C ++では、システムコールでマクロを使用することは可能で安全ですか? たとえば、次のコードを見てください。
#define WINX 54
#define WINY 30
int main()
{
system("mode con lines=WINY cols=WINX");
...
それは機能し、コードで安全に使用できますか? または、手動で文字列を作成する必要がありますか?
マクロは確かに文字列に展開されません。したがって、この
system("mode con lines=WINY cols=WINX");
に展開しません
system("mode con lines=30 cols=54");
WINX と WINY の実際の 10 進数値が必要ない場合は、静的文字列を連結して、実行時にリソースを節約できます。
#define WINX "54"
#define WINY "30"
int main()
{
system("mode con lines=" WINY " cols=" WINX);
文字列を手動で作成する必要があります。
例えば:
char command[100];
int result;
sprintf(command, "mode con lines=%d cols=%d", WINY, WINX);
result = system(command);
必要な include ディレクティブを忘れないでください。
#include <stdio.h>
#include <stdlib.h>
によって返される値の意味については、システムのドキュメントを参照してくださいsystem
。
command
配列が完全なコマンドを保持するのに十分な大きさであることを確認してください。または、std::string
代わりに使用することをお勧めします。jxh's answerは、これを行う方法を示しています。