用python写c
Project description
用python写c语言
import l0n0lc as lc
import os
import ctypes
if not os.path.exists('./l0n0lcoutput'):
os.mkdir('l0n0lcoutput')
fp = open('l0n0lcoutput/helloworld.cpp', 'w')
lc.配置输出函数(fp.write)
lc.c_include('stdio.h')
lc.c_include('stdlib.h')
with lc.如果没有定义('hahaha'):
lc.c_define('hahaha', '2')
@lc.c_函数(前缀=['extern "C"'])
def test_add(a: lc.c_i32, b: lc.c_i32) -> lc.c_i32:
with lc.如果(a.大于(100)) as f:
a(10)
with lc.否则如果(a.等于(10)):
a(100)
with lc.否则():
a(1000)
return a + b # type: ignore
@lc.c_函数()
def main(argc: lc.c_i32, argv: lc.c_char_p_p) -> lc.c_i32:
c =lc.c_i32(test_add(1, 2))
lc.输出(f'printf("Hello World! c = %d\\n", {c});\n')
lc.输出('printf("Hello World!\\n");\n')
with lc.如果定义了('hahaha'):
lc.输出('printf("哈哈哈!\\n");\n')
with lc.宏如果('hahaha == 1') as c:
lc.输出('printf("111!\\n");\n')
c.否则如果('hahaha == 2')
lc.输出('printf("否则2!\\n");\n')
c.否则()
lc.输出('printf("否则!\\n");\n')
i = lc.c_i32(0)
with lc.循环(i.小于(argc)):
lc.输出(f'printf("i = %d, v = %s\\n", {i}, {argv[i]});\n')
i += 1
return 0 # type: ignore
fp.close()
cm = lc.编译()
cm.编译文件('l0n0lcoutput/helloworld.cpp', 'l0n0lcoutput/helloworld')
os.system('./l0n0lcoutput/helloworld 1 2')
cm.编译为动态库('l0n0lcoutput/helloworld.cpp', 'l0n0lcoutput/libhelloworld.so')
path = f'{os.getcwd()}/l0n0lcoutput/libhelloworld.so'
print(path)
libhelloworld = ctypes.CDLL(path)
libhelloworld.test_add.argtypes=[ctypes.c_int32, ctypes.c_int32]
libhelloworld.test_add.restype = ctypes.c_int32
a = libhelloworld.test_add(300, 6)
print(a)
a = libhelloworld.test_add(10, 6)
print(a)
a = libhelloworld.test_add(1, 6)
print(a)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
l0n0lc-0.4.0.tar.gz
(8.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file l0n0lc-0.4.0.tar.gz.
File metadata
- Download URL: l0n0lc-0.4.0.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90b038f51ef4c6138e202270bf95a53d073cc7a61781a75a672c8dff158d2be7
|
|
| MD5 |
cffec04787bc00528262fc4daa0b7192
|
|
| BLAKE2b-256 |
7b7741b95c89e402a146d67e91dccbcc63f87c0483396ffb160de461fd398436
|
File details
Details for the file l0n0lc-0.4.0-py3-none-any.whl.
File metadata
- Download URL: l0n0lc-0.4.0-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf90d509a79942a6c90542dbe587cf4f99d7f9c38e29c127c6c5c3821d879e42
|
|
| MD5 |
d01616b6365f4e218571c3451aef3c17
|
|
| BLAKE2b-256 |
40c307e40f309be9ad7c24ac2a9a99f815c7098da0993c22f7259e6dd990eeef
|