誰かがこれを試したことがありますか?char []に格納されている値やプログラム自体の文字列を印刷するには
文字列または整数の値をプログラム自体に出力することはできますか?たとえば、forループでループすることによってすべてのテスト関数を呼び出すプログラムの2つのテストを書いています。
小さなサンプル例
#define MAX_TESTS 10
for(test_idx = 0; test_idx<MAX_TESTS; ++test_idx)
{
test_##test_idx();
//Here the output will be more like "test_test_idx();"
//But I am looking for something like
//"test_0();"
//"test_1();"
//"test_2();"
.
.
.
//"test_9();"
}
Cでそれを行うための方法はありますか?
完全なプログラム
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//Macros
#define MAX_TEST 2
#define _MYCAT(a,b) a##b()
void test_0()
{
printf("Test 0\n");
}
void test_1()
{
printf("Test 1 \n");
}
int main()
{
printf("Max Product Testing \n");
for (int test_idx=0; test_idx<MAX_TEST; ++test_idx)
{
/* Try - 1
char buffer[50];
int n = sprintf(buffer, "test_%d", test_idx);
printf("%s %d \n", buffer, n);
*/
//Try - 2
//_MYCAT(test_, test_idx);
}
return 0;
}
名前はデバッグ情報を除いて、実行時には使用できません。 'for'ループはプリプロセッサでは利用できません。それでは...関数へのポインタを含む配列を作成して使用するのはどうですか? – MikeCAT
"for(int test_idx = 0; test_idx
Mirakurun
@Mirakurun OPは何を望んでいるのですか? – ameyCU