1樓:匿名使用者
有些應用中perl的速度比較慢,但是如果和c結合起來,就可以解決這樣的問題了。perl和c結合有三種辦法,第一是用c來寫xs製作perl模組,再在perl**中載入,這個比較簡單,cu和ibm都有文件看,我就不寫了。第二是在c中嵌入perl指令碼,這個對我來說沒什麼用,我還沒看。
第三就是本文要說的,在perl中嵌入c**了。實現起來簡單方便,唯一的要求是執行perl指令碼的機器要有編譯器,vc和gcc都行。直接看**吧,然後再解釋:
**:#!/usr/bin/perl
use warnings;
use strict;
use inline c => <<'end_c';
#include
sv *makesv( char *name )
hv *makehash( char *key_name, char *value )
void addkey( hv *my_hash, char *key_name, char *value )
void mybox( char *title, char *content )
end_c
print makesv( "yunshu\n" );
my %hash = %;
$hash = "icy";
addkey( \%hash, "third", "nmap" );
addkey( \%hash, "end", "luoluo" );
foreach my $key( keys(%hash) )
mybox( "test", "hello world" );
首先是use inline c => <<'end_c';引入模組表示要嵌入c語言**,並且指名end_c表示c**結束。這裡的c**中,makesv函式我演示瞭如何將c 中的字串返回給perl成為標量;makehash函式,我演示瞭如何建立一個雜湊表(hashtable),並儲存了一個key和它的value,然後將這個雜湊表返回給perl使用;addkey函式,我演示瞭如何在perl中使用c中返回的雜湊表,並用c**新增一個元素;mybox函式,我演示瞭如何呼叫windows的api函式。**很簡單,看看就明白了。
需要注意的是,當c**中需要指標的時候,你必須在perl中傳遞一個應用給c函式;當c中返回一個指標的時候,你需要使用%將c中返回的hashtable指標(引用)轉換成hashtable,轉換陣列則使用@來進行。這裡c**中的一些函式,都是perl提供的c api介面,詳細的資料可以參考:http:
//perldoc.perl.org/perlguts.
html,你安裝perl的目錄下面有離線版本。
2樓:匿名使用者
學會搜尋
如何用perl提取c語言函式名 10
3樓:
1、有些應用中perl的速度比較慢,但是如果和c結合起來,就可以解決這樣的問題了。
2、perl和c結合有三種辦法,第一是用c來寫xs製作perl模組,再在perl**中載入,這個比較簡單,cu和ibm都有文件看,我就不寫了。
2、在c中嵌入perl指令碼,這個對我來說沒什麼用,我還沒看。
3、就是本文要說的,在perl中嵌入c**了。實現起來簡單方便,唯一的要求是執行perl指令碼的機器要有編譯器,vc和gcc都行。
求各位大神大佬幫忙!!!加急!!! c語言:如何把十進位制的12轉成十六進位制的0x12 50
4樓:匿名使用者
c語言中,八進位制、十進位制、十六進位制可以自動轉換,注意格式即可。
十進位制的12對應的十六進位制數是0xc
因此將十進位制數12按十六進位制數輸出語句為printf("0x%x",12);
程式:#include
void main()
//執行結果截圖:
5樓:自我程式設計
只是列印輸出,直接printf("%x",12)。
6樓:星印火
12轉bcd碼就是00010010,可寫為0x12
7樓:笑影瀰漫
u8 d_data = 12; //十進位制數
u8 h_data = 0; //存放轉換成的十六進位制數
h_data = (d_data/10)*16 + d_data%10;
rename c語言版切換為perl版
8樓:匿名使用者
沒有太明白你的意思。類linux系統,系統級別上,有 rename 這個方法,看到你man rename是呼叫作業系統的命令。perl語言也有rename方法,這個方法自然需要在perl語言環境裡執行,也就是寫在perl可執行語言檔案裡。
類似:#!/usr/bin/perl
use strict;
use warnings;
use utf8;
my $oldname = '11.txt';
my $newname = '22.txt';
if( rename($oldname, $newname) ) else1;
C語言如何將字串中的單詞分別存到另二維陣列
通過gcc編譯 include include int isalpha char t int main int i,length,totalnumber int prvisalpha while 1 if totalnumber 1 printf there is 1 word.nit is s.n...
C語言呼叫完void函式後如何將值返回主函式實現輸出的呢?void函式沒有返回值是陣列不同
1 來c語言呼叫完void函式後如何自將值返回主函式實現輸出的呢?答 因為 void函式沒有返回值,要想把讓函式的值帶回主函式,還有兩種辦法,第一是使用指標做引數,第二是瀠陣列做引數。2 用指標傳遞就可以了嗎,那如果不用指標呢?答 用指標當然可以啦。如果不用指標,那就選擇用陣列引數了。我看到你對一條...
c語言如何將數字字元0到9轉化為數字
最簡單的是讓數字字元去減 0 得到的就是數字的值。示例如下 char c 0 1 2 3 9 int num 0 num int c 0 2 用函式atoi可以把字元轉為數字 1 最簡抄單的是讓數字 字元去減襲 0 得到的就是數字的bai值。示例du如下 char c 0 1 2 3 9 int n...