Tôi không chắc chắn đây là những gì cần, tôi đã sử dụng trình tạo mã để tạo mã C++. Đặc biệt, cheetah python. Về cơ bản bạn nhúng mã python thẳng vào bên trong mã C++ và chạy qua cheetah preprocessor.it cho phép thực hiện các phép tính phức tạp dễ dàng hơn nhiều so với sử dụng các mẫu hoặc tiền xử lý C++, cộng với bạn nhận tất cả các thư viện và phần mở rộng python. mặt khác, nó làm cho việc gỡ lỗi trở nên khó khăn hơn nếu có điều gì đó sai. Nếu bạn quan tâm, tôi có thể cung cấp một số ví dụ và chế độ Emacs để chỉnh sửa các chương trình C++ cheetah.
Nếu bạn cần thứ gì đó ít mạnh mẽ hơn và chỉ muốn ở trong C++ C, hãy xem bộ tiền xử lý tăng cường, here. Phải mất một chút thời gian để làm quen với nó, nhưng có thể làm cho cuộc sống thực sự dễ dàng khi mã lặp đi lặp lại có liên quan đến
okay, tôi đang dán dụ cheetah, cho tôi một vài phút:
#if defined (__INTEL_COMPILER)
#pragma vector aligned
#endif
for(int a = 0; a < $N; ++a) {
/// for functions in block
%for ii, (fi,fj) in enumerate(fb)
%set i = ii + ifb
/// can also use (ix,iy,iz)=fi[0:2], need to clean up when not lazy
%set ix = fi[0]
%set iy = fi[1]
%set iz = fi[2]
%set jx = fj[0]
%set jy = fj[1]
%set jz = fj[2]
q$(i) += Ix(a,$(ix),$(jx))*Iy(a,$(iy),$(jy))*Iz(a,$(iz),$(jz));
%end for
/// end for functions in block
}
sản xuất (sau khi chạy cheetah ...
)
#if defined (__INTEL_COMPILER)
#pragma vector aligned
#endif
for(int a = 0; a < 6; ++a) {
q0 += Ix(a,0,1)*Iy(a,0,0)*Iz(a,0,0);
q1 += Ix(a,1,1)*Iy(a,0,0)*Iz(a,0,0);
q2 += Ix(a,0,1)*Iy(a,1,0)*Iz(a,0,0);
q3 += Ix(a,0,1)*Iy(a,0,0)*Iz(a,1,0);
q4 += Ix(a,0,0)*Iy(a,0,1)*Iz(a,0,0);
q5 += Ix(a,1,0)*Iy(a,0,1)*Iz(a,0,0);
q6 += Ix(a,0,0)*Iy(a,1,1)*Iz(a,0,0);
q7 += Ix(a,0,0)*Iy(a,0,1)*Iz(a,1,0);
q8 += Ix(a,0,0)*Iy(a,0,0)*Iz(a,0,1);
q9 += Ix(a,1,0)*Iy(a,0,0)*Iz(a,0,1);
}
mà là một C thường xuyên ++ mã
dòng bắt đầu bằng% được hiểu là báo cáo python bởi cheetah trước bộ xử lý. /// là các bình luận cheetah. Mặc định sử dụng # như câu lệnh python, nhưng tôi đã thay đổi chúng để tránh va chạm với các chỉ thị tiền xử lý C. %end
phải được sử dụng để chấm dứt các khối python. Các biến trong mã C++ bắt đầu bằng $ được thay thế bằng các biến python.
Bạn có muốn các ví dụ sử dụng bộ tiền xử lý tăng cường không?
Những loại điều bạn đang cố gắng để tạo ra hoặc tính toán? Cấu trúc? Chức năng đường thẳng? Mã spaghetti? Máy nhà nước? – Potatoswatter