是否可以创建一个宏,将换行符替换为分号
Is it possible to make a macro that replaces newlines with semicolons
假设有人真的很懒,不想一直记住在一行末尾键入分号,有没有办法通过宏来解决这个问题?
我不是说这是我想做的事情。我只是好奇是否有人试过/是否可能。
类似:
#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预处理器宏,因为C宏的名称必须是标识符——以非数字字符开头的字母数字字符序列(加上下划线)。
你必须这样做:
#define SC ;
int x = 0 SC
这比你想解决的问题更糟糕
相关文章:
- 如何防止clang格式在流运算符调用之间添加换行符<<
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 在 Stream C++ 文本之前有一个额外的换行符
- 流:CSV 文件中的换行符
- 如何在三元条件运算符中添加换行符和连接? :在 C++ 中
- Clang-格式:在多行语句之后的换行符上打开大括号
- 在输出流中插入换行符
- 防止控制台在通道字符(在 c++ 中)中输入空格(即空格、制表符和换行符)
- QProcess::readAllStandardOutput() 和换行符
- 如果有换行符,clang 格式不会附加大括号
- 提取后返回换行符的C++istream.get()
- 如何在出现换行符之前将多个整数作为输入?
- 正则表达式 获取两个换行符之间的文本
- 包含换行符分隔的单词的文件和C++中这些单词的字符串向量的大小是否相同?
- 在字符串中输入换行符
- 从文本文件中读取数据并删除所有换行符空格,并在 C++ 控制台中显示
- 使用 fgets() 从键盘读取时从以前的输入读取换行符
- C++ 换行符上的合并排序错误中断
- 提升字符串替换不会用字符串替换换行符
- 是否可以创建一个宏,将换行符替换为分号