如何在 C++ 中将“elif”定义为“else if”?
Posted
技术标签:
【中文标题】如何在 C++ 中将“elif”定义为“else if”?【英文标题】:How Can I #define "elif" as "else if", in C++? 【发布时间】:2021-03-30 10:10:15 【问题描述】:我想通过 c++ 预处理器将elif
作为else if
的宏
所以不要像这样写:-
if (something)
// Do something
else if (something else)
// Do something else
else
// Do something else
我可以这样写:-
if (something)
// Do something
elif (something else)
// Do something else
else
// Do something else
这是我尝试过的:-
#define elif "else if"
但 MinGW-w64 显示错误:-
error: expression cannot be used as a function
请帮忙!?
【问题讨论】:
您要解决的问题是什么?else if
对 C 程序员来说太易读了,所以你需要找到一种方法来降低你的代码的可读性,或者......?
@Lundin 我认为elif
看起来比else if
更好(来自python 背景)。此外,我的程序大多是私人的
Paul Ogilvie 和@IWonderWhatThisAPI感谢这有效,我以前从未使用过#define,只是看到一些 youtuber 使用引号,所以我也使用了,
我会强烈建议不要这样做,即使你是唯一会阅读你的代码的人。改掉坏习惯很难,写只有你懂的代码是个很坏的习惯
【参考方案1】:
#define
预处理指令不使用引号来分隔其替换文本。要将elif
定义为else if
,只需使用:
#define elif else if
也就是说,这通常被认为是一个坏主意。 C程序员已经习惯了影响程序控制的普通关键字,使用自定义关键字会让很多人感到困惑。
【讨论】:
谢谢,我以前从未使用过#define,只是看到一些youtuber使用引号,所以我也使用了【参考方案2】:是的,C 和 C++ 允许各种疯狂的事情,例如使用宏发明自己的秘密语言。这样做会使 C 和 C++ 程序员很难阅读您的代码,因为他们知道 C 和 C++,但不知道您的秘密宏语言。
例子:
#include <stdio.h>
#define elif else if
#define if(...) if(0)
int main()
int my_own_macro_language=1;
int good_idea=1;
if (my_own_macro_language == good_idea)
puts("Lets invent our own macro language!");
elif (!good_idea)
puts("Ok so not a good idea but lets do it anyway!");
elif (I really want to write strange macros, please please please)
puts("Ok since you asked nicely!");
else
puts("Bad idea, lets stick with C and drop the macros.");
输出:
Bad idea, lets stick with C and drop the macros.
【讨论】:
r/ProgrammingHumor以上是关于如何在 C++ 中将“elif”定义为“else if”?的主要内容,如果未能解决你的问题,请参考以下文章
如何在一行中编写嵌套的 if-elif-else 条件? [复制]
Python小技巧,如何简化大量的 if…elif…else 代码?
pandas编写自定义条件函数基于if函数elif函数else函数使用apply基于条件对数据行进行判断生成新的数据列(apply function with condition)