通用C++/Python 多语言的存在
Existence of universal C++/Python Polyglot
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++演示 蟒蛇演示
- C++模板来检查友元函数的存在
- 既然存在危险,为什么项目要使用-I include开关
- 我们可以访问一个不存在的联盟的成员吗
- C++:对不存在的命名空间使用命名空间指令
- C++quit()函数中可能存在作用域问题
- C++擦除(如果存在)
- 不同语言中相同代码的不同行为
- g++ 说函数不存在,即使包含正确的标头
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 有了gcc,是否可以链接库,但前提是它存在
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- C++Builder中的OnClick事件签名存在问题
- 如何正确地将分支添加到已存在的树中
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 如何检查QList中是否存在值
- 通用C++/Python 多语言的存在
- 为什么语言的简单性和执行时间之间似乎存在紧张关系
- 是否存在对类型名称有效但对基本类型无效的语言构造
- ARM GNU Compiler语言 - j[jobs]选项存在