- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在写一个小模块,它会在Python和C中使用。我可以写一个Python版本和一个C版本,或者我可以编译C版本然后集成到Python中。但由于该模块主要是数学计算,这在 Python 和 C 中基本相同,所以我正在考虑编写一个既可以在 Python 中导入又可以编译为 C 源代码的文件。
这是一个基本技巧:
#if 1 /*
write Python code here
''' */
write C code here
#endif // '''
因此 Python 解释器将忽略 C 部分,而 C 编译器将忽略 Python 部分。
例如,下面的foo.py
:
#if 1 /*
from math import sin, cos, sqrt
''' */
#include <math.h>
#endif // '''
#if 1 /*
def rotation(axis, angle):
matrix = [0.] * 9
''' */
void rotation(double *axis, double angle, double *matrix) {
double sa, ca, ia, r, x, y, z, xx, yy, zz;
double cayz, caxz, caxy, iayz, iaxy, iaxz, sax, say, saz;
#endif // '''
sa = sin(angle);
ca = cos(angle);
ia = 1. - ca;
r = sqrt(axis[0] * axis[0] + axis[1] * axis[1] + axis[2] * axis[2]);
x = axis[0] / r;
y = axis[1] / r;
z = axis[2] / r;
xx = x * x;
yy = y * y;
zz = z * z;
cayz = ca * (yy + zz);
caxz = ca * (xx + zz);
caxy = ca * (xx + yy);
iayz = ia * y * z;
iaxz = ia * x * z;
iaxy = ia * x * y;
sax = sa * x;
say = sa * y;
saz = sa * z;
matrix[0] = cayz + xx;
matrix[1] = iaxy - saz;
matrix[2] = iaxz + say;
matrix[3] = iaxy + saz;
matrix[4] = caxz + yy;
matrix[5] = iayz - sax;
matrix[6] = iaxz - say;
matrix[7] = iayz + sax;
matrix[8] = caxy + zz;
#if 1 /*
return matrix
''' */
}
#endif // '''
在 Python 中:
from foo import rotation
print(rotation([1., 2., 3.], 4.))
在 C 中:
#include "foo.py"
int main() {
double axis[3] = {1., 2., 3.};
double angle = 4.;
double matrix[9];
rotation(axis, angle, matrix);
printf("[%lf, %lf, %lf, %lf, %lf, %lf, %lf, %lf, %lf]",
matrix[0], matrix[1], matrix[2],
matrix[3], matrix[4], matrix[5],
matrix[6], matrix[7], matrix[8]);
return 0;
}
现在我想知道是否可以更进一步,使用一些更好的模式(例如宏)来定义:
或其他一些改进。
最佳答案
这个提案的根本问题是在编译 C 的同时解释 Python。
虽然您将 C 源代码通过预处理器传递一次,这是 C 构建工具链的默认行为,但对于 Python,您必须构建一个工具来通过 C 预处理器传递 .py 文件,每次你想运行代码时,然后将输出传递给 Python 解释器。
您的运行时将需要 Python 解释器和您的特殊工具,如果没有这种依赖性,代码将无法再移植到系统。
这是一个不存在的问题的复杂解决方案。
关于python - Python 和 C 的单一源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58040403/
我想在单个 View 中显示文本、图像。也请帮助我 我想从我的类(class)而不是 xml 提供图像的 src 请帮助谢谢 最佳答案 你可以为此使用Button Button b=new Butto
我有一个消息模型,管理员和用户都可以创建消息。但对于管理员和用户来说,有单独的模型,称为管理员和用户。 消息模型有一个名为“created_by”的列,用于存储创建者的 ID。现在的问题是我如何与 M
我无法为菜单资源充气,并且无法将其附加到我的 Activity 的工具栏上。 这似乎很简单,但是我想我缺少明显的东西。我正在使用NavGraph,所以我不知道这是否影响工具栏? 有人看到我做错了吗?
我正在开发一个应用程序,它有一个 MainActivity 并且有许多用于医院、诊所的 ImageViews ... 当按下其中一个时,它会带你到一个新的 Activity DisplayActivi
我会尽量保持简短,但我需要一些建议。 我所在的团队正在并行开发适用于 android、iphone 和 wp7 的应用程序。我们有一个设计团队,可以为所有三个平台提出一个单一的设计。 最新应用程序的设
我正在使用 Josh Smith 中的示例.他有一个显示 CustomerViewModel 列表的 WorkspaceViewModel。他使用相同的 ViewModel 来显示所有客户和编辑一个客
我是 Azure 新手,正在尝试了解各种服务,目前我正在尝试了解移动服务及其各种功能,例如身份验证和推送。 移动服务是否仅支持一种操作系统上的一个应用程序,还是可以在多个操作系统(Android、iO
我在 Stoyan Stefanov 的书中读到了关于单一变量模式的内容。 JSLint 也很好。 但我在我的代码中注意到我可能会重载此模式。整个我的 .js 文件,整个脚本只是一个大变量。 例如:
我想在一个 View 中添加多个具有不同不透明度的阴影。阴影的规范如下: Y 偏移量为 4,模糊半径为 1 Y 偏移量为 10,模糊半径为 10 Y 偏移量为 2,模糊半径为 4 1 的模糊半径,1
我们有几个 API,我们希望通过客户端凭据流授予对客户端的访问权限。流程会像这样。 客户端根据某个范围从 is4 获取 token 客户端使用 token 访问第一个 API 客户端需要使用相同的 t
我是 ruby on rails 的新手。我正在尝试在 ruby on rails 上设计一个注册表单,该表单具有 Basic 和 Paid 用户的单选按钮。当用户点击付费并点击提交时,应该会
我用 Entity Framework 6 开发了一个项目,该项目使用 MySQL 作为数据库。在我的 Windows 系统上,该项目正在运行。现在我试图在我的 linux 机器上移动那个项目。为了运
我正在为我的电子商务应用程序创 build 计。它将拥有由 AWS Lambda 支持的多项服务。 Orderservice、InventoryService、PaymentService、Loggi
我目前正在开发一个执行以下操作的单 View 应用程序: 使用 CoreLocation 获取用户位置 将他们的经/纬度发送到 API 以 JSON 格式返回潮汐数据 深入研究 JSON 中的对象和键
我想托管各种 Angular2 应用程序,这些应用程序使用相同的框架包和来自根域和子域的 node_modules: domain.com subdomain.domain.com sub2.doma
我正在尝试使用 Git Publisher 插件来标记带有 $BUILD_TAG 的成功构建,但我无法找出它将接受的 Target remote name 的值。如果我在 GIT 配置中使用 Repo
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
有一个带有许多控件的 View (窗口),以简化: 此 View 用于显示和编辑多个配置: public class ViewModel: INotifyPropertyChanged
我有一个 textView 和类似的文本 “这是带有 KeyWord 和 Link 浏览的简单文本” 在上面的文字中我想制作.. 点击链接可打开该网址和点击该关键字在我的应用程序中打开一个新 Acti
我在我现有的应用程序中有一个任务,我们有 2 个不同的数据库,一个在 SQL Server 中,另一个在 Oracle 中,但是两个模式是相同的。 目前我们有一个使用 Entity Framework
我是一名优秀的程序员,十分优秀!