gpt4 book ai didi

python - 通用 C++/Python Polyglot 的存在

转载 作者:行者123 更新时间:2023-11-30 03:20:14 49 4
gpt4 key购买 nike

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

例如,

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

在 C 和 Perl 中有效。

我不是程序员,只是写了几个例子给学生看的数学家。为了方便起见,我在编写示例时同时使用了 C++ 和 Python 版本,当时我想知道将这两个版本放在同一个文件中的可能性。我不知道 polyglot(指程序)一词的存在,也不知道它们 can be such a source of fun .

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

也许我应该首先询问是否存在 C++/Python 多语言,因为在 mysearches我没有看到 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++,我们得到了 """:

warning: missing terminating " character

最佳答案

在 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++ Demo python Demo

关于python - 通用 C++/Python Polyglot 的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52980076/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com