#define 在 C/C 中的用法++
我需要在 C/C++ 中编写这样的定义
#define scanf( fscanf(inf,
,以便将每个 scanf(
替换为 fscanf(inf,
文学
但我不知道如何...
谢谢
I need to write such a define in C/C++
#define scanf( fscanf(inf,
in order to replace each scanf(
with fscanf(inf,
literary
But I do not know how...
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您想要使用可变参数宏。
就你而言,我相信你想要:
You want to use a Variadic macro.
In your case, I believe you want:
不,你不需要。您真正想做的是重定向 stdin。
No, you don't. What you really want to do is redirect
stdin
.只需使用 fscanf 编写所有代码,并使用如下宏定义文件名:
Just write all your code using fscanf, and define the file name with a macro like this:
当然不可能按照你尝试的方式。
你必须做类似的事情
参见这里
编辑:GNU cpp 也支持可变宏;它是 VA_ARGS 前面有双下划线,并以双下划线结尾...我必须在这里研究转义标记...
not possible the way you tried of course.
you have to do things like
See e.g. here
EDIT: GNU cpp supports variadic macros too; it is VA_ARGS preceded by double underscore and ended with double underscore... I have to study escaping markup here...
您无法替换括号。如果您使用的是 Visual C++,那么您可以使用可变参数宏来完成您想要的操作:
其他编译器可能有类似的功能,但我对它们不熟悉。
You can't replace a parenthesis. If you're using Visual C++, then you can use a variadic macro to accomplish what you want:
Other compilers may have a similar facility, but I'm not familiar with them.