说某人真的很懒,并且不想继续记住在一行的末尾键入分号,有没有办法通过宏来克服它?
我不是说这是我想做的事情。只是好奇,如果有人试过/如果可能的话。
类似的东西:
#define '\n' ';\n'
答案 0 :(得分:2)
不,宏标识符只能是字母,数字和下划线。
此外,这会导致大量不必要的分号
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
}
答案 1 :(得分:0)
你不会在每一行的末尾自动需要一个分号。
编写一个用分号替换换行符的C预处理器宏是不可能的,因为C宏名称必须是标识符 - 一系列字母数字字符(加上下划线)以非分号开头数字字符。
您必须这样做:
#define SC ;
int x = 0 SC
这比您尝试修复的问题更糟糕。