2010-11-16 24 views
2

J'utilise PyPy pour traduire du code python en code C. J'ai écrit un script très simple comme ci-dessous:Où est le point d'entrée du code C générant par pypy

def main(): 
    print "hello world!" 

def entry_point(argv): 
    main() 
    return 0 

def target(*args): 
    return entry_point, None 

Je translate.py --source test.py utilisé. Il a généré du code C avec succès. Quand je make ce code, il a généré un fichier exécutable test-c. Cependant, je ne peux pas trouver la fonction principale dans ce code en utilisant grep, donc je me demande où est le point d'entrée du code générant par pypy. Merci pour votre lecture.

Répondre

1

PyPy ne vous donne probablement pas de fonction "main" car vous n'avez pas de point d'entrée dans votre code Python. Vous devriez probablement ajouter

main() 

à la fin du fichier.

2

est incorrect. Grep pour pypy_g_entry_point. La fonction main() est susceptible d'être inline dans cet exemple, donc vous ne l'obtiendrez pas. Si vous voulez qu'il soit rendu, utilisez --inline-threshold = 0 comme paramètre de traduction.

+0

Merci pour votre réponse. J'ai essayé d'utiliser - inline-threshold = 0 comme paramètre de traduction comme vous l'avez dit. Cependant, je ne trouve toujours pas la fonction main() dans le code C généré. – huangcd

+0

il serait appelé pypy_g_main et vivre dans implement.c – fijal

+0

Merci, je pense que j'ai résolu mon problème en quelque sorte. La fonction principale est définie par macro comme PYPY_MAIN_FUNCTION dans le fichier main.h – huangcd