#define scanf( fscanf(inf,
为了将每个scanf(
替换为fscanf(inf,
字面意义上的。但我不知道怎么做......谢谢
#define scanf( fscanf(inf,
为了将每个scanf(
替换为fscanf(inf,
字面意义上的。但我不知道怎么做......谢谢
#define scanf(...) fscanf(inf,__VA_ARGS__)
freopen(inf, "r", stdin);
#ifdef USE_SCANF
#define SCANF_FILE(file) stdin
#else
#define SCANF_FILE(file) file
#endif
fscanf(SCANF_FILE(blah), "%d", &a);
当然,你尝试的方式是不可能的。
你必须像这样做:
#define scanf(S, ...) fscanf(inf, S, __VA_ARGS__)
例如请查看这里
编辑:GNU cpp也支持可变参宏;它是VA_ARGS前面加上双下划线,后面以双下划线结尾...我得在这里研究转义标记...
__VA_ARGS__
的最佳方式。 ;) - Chris Lutz你不能替换括号。如果你正在使用Visual C++,那么你可以使用可变参数宏来实现你想要的功能:
#define scanf( format, ... ) fscanf( inf, format, __VA_ARGS__ )
其他编译器可能有类似的功能,但我不熟悉它们。