假设有人真的很懒,不想一直记住在行尾输入分号,有没有办法用宏来解决这个问题?
我不是说这是我想做的事情。只是好奇是否有人尝试过/如果可能的话。
就像是:
#define '\n' ';\n'
不可以,宏标识符只能是字母、数字和下划线。
此外,这会导致大量不必要的分号
if (cond)
stmt;
/* or */
if (cond)
{
stmts;
}
会被这个理论宏毁掉。
如果您想用分号后跟换行符替换所有换行符(这是一个非常糟糕的主意),您可以使用 sed 行
sed -i "s/^\([^#].*[^\;{]\)$/\1;/" file.cpp
这将在任何行的末尾添加一个分号:
#
{
虽然这仍然不完美。总会有你不想以分号结尾的情况,这会导致代码无法编译,尽管这比上面的 ifs 是空语句要好。
int var = //like here
some_value;
func(arg1, arg2, // and here
arg3, arg4);
int func() // and here too
{
//body
}
您不会在每行末尾自动需要分号。
没有办法编写用分号替换换行符的 C 预处理器宏,因为 C 宏名称必须是标识符——以非数字字符开头的字母数字字符(加上下划线)序列。
你必须这样做:
#define SC ;
int x = 0 SC
这比您要解决的问题更糟糕。