首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通用C++/ Polyglot的存在

通用C++/ Polyglot的存在
EN

Stack Overflow用户
提问于 2018-10-25 01:30:31
回答 1查看 683关注 0票数 5

多角化是为在多种语言中有效的程序指定的名称。

例如,

代码语言:javascript
复制
#include <stdio.h>
#define do main()
do {
   printf("Hello World!\n");
}

在C和Perl中有效。

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

我的问题是:是否知道为C++和Python具有通用多个标记的技术。我的意思是说,它不是一个单一的程序,而是一个模板,它允许将C++中的任何(相当短的)程序及其版本的Python重写成一个组合它们的多边形。

也许我应该先问C++/ polyglot的存在,因为在我的 搜索中,我没有看到C++/polyglot。

我把它放在这里是因为我想要一个多字形图,有一点实际的原因。我可以把它贴在程序设计难题&代码高尔夫上。如果应该去那里的话。

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

我试图将Python封装在#if 0#endif之间,这将是Python中的注释,并告诉C++忽略该部分。对于C++可用的部分,我尝试将它封装在docstring中,对于大多数效果,Python都会忽略它。但是没有办法使引号对Python和C++都是可接受的。

代码语言:javascript
复制
#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++,我们得到了"""

警告:缺少终止"字符

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-25 08:26:46

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

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

为了避免这个错误/警告,您可以使用一个变体:""" "" """

因此,您可以在C++中将空字符串与带空格的字符串连接起来,对于python,您的字符串中只有额外的引号。

最后,你有:

代码语言:javascript
复制
#if 0
print('Hi there')
#endif
#if 0
""" "
#endif
#include <iostream>
int main() {
    std::cout << "Hi there" << std::endl;
}
#if 0
" """
#endif

C++演示 python演示

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52980076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档