通用C++/Python 多语言的存在

Existence of universal C++/Python Polyglot

本文关键字:语言 存在 Python C++ 通用      更新时间:2023-10-16

Polyglot是赋予在多种语言中有效的程序的名称。

例如

#include <stdio.h>
#define do main()
do {
printf("Hello World!n");
}

在 C 和 Perl 中有效。

我不是程序员,只是一个数学家,为学生写了几个例子。为了方便起见,我正在编写C++和Python版本的示例,当时我想知道将两个版本放在同一个文件中的可能性。我不知道术语多语言(指程序(的存在,也不知道它们可以成为如此有趣的来源。

我的问题是:是否知道一种为C++和Python提供通用多语言的技术。通用我的意思是,它不是一个单一的程序,而是一个模板,允许将任何(相当短的(C++程序及其 Python 版本重写为将它们组合成多语言。

也许我应该先询问是否存在C++/Python多语言,因为在我的搜索中我没有看到C++/Python多语言。

我把它贴在这里,因为我想要多语言是出于稍微实用的原因。我可以把它发布在Programming Puzzles & Code Golf上。如果它应该去那里。

对我来说,很难判断存在或实现解决方案。我对这些巧妙的结构没有太多经验。

我尝试将 Python 部分括在#if 0#endif之间,这将是 Python 中的注释,并告诉C++忽略该部分。对于C++可用的部分,我尝试将其包含在文档字符串中,对于大多数效果,Python会忽略它。但是找不到一种方法使引号对Python和C++都接受。

#if 0
print('Hi there')
#endif
#if 0
"""
#endif
#include<iostream>
int main() {
std::cout << "Hi there" << std::endl;
return 0;
}
#if 0
"""
#endif

对于C++,我们得到了"""

警告:缺少终止"字符

在 C/C++ 中,我们可以连接 C 字符串。

"""是空字符串与未完成字符串""的串联。

为避免此错误/警告,您可以使用变体:""" "" """

所以你有空字符串与字符串的串联,C++ 对于 Python,您的字符串中只有额外的引号。

最后,您有:

#if 0
print('Hi there')
#endif
#if 0
""" "
#endif
#include <iostream>
int main() {
std::cout << "Hi there" << std::endl;
}
#if 0
" """
#endif

C++演示 蟒蛇演示