1

C ++では、システムコールでマクロを使用することは可能で安全ですか? たとえば、次のコードを見てください。

#define WINX 54
#define WINY 30

int main()
{
system("mode con lines=WINY cols=WINX");
...

それは機能し、コードで安全に使用できますか? または、手動で文字列を作成する必要がありますか?

4

4 に答える 4

3

マクロは確かに文字列に展開されません。したがって、この

system("mode con lines=WINY cols=WINX");  

に展開しません

system("mode con lines=30 cols=54");
于 2013-06-12T19:15:32.853 に答える
1

WINX と WINY の実際の 10 進数値が必要ない場合は、静的文字列を連結して、実行時にリソースを節約できます。

#define WINX "54"
#define WINY "30"

int main()
{
system("mode con lines=" WINY " cols=" WINX);
于 2013-06-12T20:21:57.307 に答える
0

文字列を手動で作成する必要があります。

例えば:

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は、これを行う方法を示しています。

于 2013-06-12T19:24:10.383 に答える