假设有人真的很懒,不想一直记住在行尾输入分号,有没有办法用宏来克服这个问题?
我并不是说这是我想做的事情。只是好奇是否有人尝试过/是否可能。
类似于:
#define '\n' ';\n'
最佳答案
不可以,宏标识符只能是字母、数字和下划线。
此外,这会导致大量不必要的分号
if (cond)
stmt;
/* or */
if (cond)
{
stmts;
}
会被这个理论宏毁掉。
如果您想用分号后跟换行符替换所有换行符(这是一个非常糟糕的主意),您可以使用 sed 行来实现
sed -i "s/^\([^#].*[^\;{]\)$/\1;/" file.cpp
这将在任何行的末尾添加一个分号:
- 尚未以分号结尾
- 不以
#
开头 - 不以
{
结尾
尽管这仍然不完美。总会有这样的情况,您不想以分号结尾,这会导致代码无法编译,尽管这比上面的 if 为空语句要好。
int var = //like here
some_value;
func(arg1, arg2, // and here
arg3, arg4);
int func() // and here too
{
//body
}
关于c++ - 是否可以制作一个用分号替换换行符的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994974/