¹¹½¨»ù±¾µÄLinux C ±à³Ì»·¾³ ÊÕ²Ø
±¾ÎÄ»ùÓÚdebian-40r0(ÄÚºË2.6.18)½éÉÜÒ»ÏÂÈçºÎÔÚÒ»¸ö±ê׼ϵͳÖй¹½¨Linux CµÄ»ù±¾±à³Ì¿ª·¢»·¾³¡£
Ò»¸öÍêÕûµÄ¿ª·¢»·¾³Ö÷Òª°üÀ¨Ëĸö²¿·Ö£º±ê×¼C¿â¡¢Í·Îļþ¡¢¹¤¾ßÁ´¡¢±à¼Æ÷¡¢°ïÖúÎĵµ£¬ÏÂÃæÒÀ´Î½éÉÜ¡£
±ê×¼C¿âglibc
glibcÊÇgnu·¢²¼µÄlibc¿â£¬¼´cÔËÐп⡣glibcÊÇlinuxϵͳÖÐÄÚºËÖ®ÉÏ×îµ×²ãµÄapi£¬¼¸ºõÆäËüÈκεÄÔËÐпⶼ»áÒÐÀµÓÚglibc¡£glibc³ýÁË·â×°linux²Ù×÷ϵͳËùÌṩµÄϵͳ·þÎñÍ⣬Ëü±¾ÉíÒ²ÌṩÁËÐí¶àÆäËüһЩ±ØÒª¹¦ÄÜ·þÎñµÄʵÏÖ£¬Ö÷ÒªµÄÈçÏ£º
(1)string£¬×Ö·û´®´¦Àí
(2)signal£¬ÐźŴ¦Àí
(3)dlfcn£¬¹ÜÀí¹²Ïí¿âµÄ¶¯Ì¬¼ÓÔØ
(4)direct£¬ÎļþĿ¼²Ù×÷
(5)elf£¬¹²Ïí¿âµÄ¶¯Ì¬¼ÓÔØÆ÷£¬¼´interpreter
(6)iconv£¬²»Í¬×Ö·û¼¯µÄ±àÂëת»»
(7)inet£¬socket½Ó¿ÚµÄʵÏÖ
(8)intl£¬¹ú¼Ê»¯£¬¼´gettextµÄʵÏÖ
(9)io£¬»ù±¾IO²Ù×÷
(10)linuxthreads£¬Ïß³Ì
(11)locale£¬±¾µØ»¯
(12)login£¬Ðé ......
¹¹½¨»ù±¾µÄLinux C ±à³Ì»·¾³ ÊÕ²Ø
±¾ÎÄ»ùÓÚdebian-40r0(ÄÚºË2.6.18)½éÉÜÒ»ÏÂÈçºÎÔÚÒ»¸ö±ê׼ϵͳÖй¹½¨Linux CµÄ»ù±¾±à³Ì¿ª·¢»·¾³¡£
Ò»¸öÍêÕûµÄ¿ª·¢»·¾³Ö÷Òª°üÀ¨Ëĸö²¿·Ö£º±ê×¼C¿â¡¢Í·Îļþ¡¢¹¤¾ßÁ´¡¢±à¼Æ÷¡¢°ïÖúÎĵµ£¬ÏÂÃæÒÀ´Î½éÉÜ¡£
±ê×¼C¿âglibc
glibcÊÇgnu·¢²¼µÄlibc¿â£¬¼´cÔËÐп⡣glibcÊÇlinuxϵͳÖÐÄÚºËÖ®ÉÏ×îµ×²ãµÄapi£¬¼¸ºõÆäËüÈκεÄÔËÐпⶼ»áÒÐÀµÓÚglibc¡£glibc³ýÁË·â×°linux²Ù×÷ϵͳËùÌṩµÄϵͳ·þÎñÍ⣬Ëü±¾ÉíÒ²ÌṩÁËÐí¶àÆäËüһЩ±ØÒª¹¦ÄÜ·þÎñµÄʵÏÖ£¬Ö÷ÒªµÄÈçÏ£º
(1)string£¬×Ö·û´®´¦Àí
(2)signal£¬ÐźŴ¦Àí
(3)dlfcn£¬¹ÜÀí¹²Ïí¿âµÄ¶¯Ì¬¼ÓÔØ
(4)direct£¬ÎļþĿ¼²Ù×÷
(5)elf£¬¹²Ïí¿âµÄ¶¯Ì¬¼ÓÔØÆ÷£¬¼´interpreter
(6)iconv£¬²»Í¬×Ö·û¼¯µÄ±àÂëת»»
(7)inet£¬socket½Ó¿ÚµÄʵÏÖ
(8)intl£¬¹ú¼Ê»¯£¬¼´gettextµÄʵÏÖ
(9)io£¬»ù±¾IO²Ù×÷
(10)linuxthreads£¬Ïß³Ì
(11)locale£¬±¾µØ»¯
(12)login£¬Ðé ......
/*
*Ëã·¨ÔÀí£º½«Í¼G Öеı߰´È¨Êý´ÓСµ½´óÖðÌõ¿¼²ì,
* °´²»¹¹³ÉȦµÄÔÔò¼ÓÈëµ½TÖÐ(ÈôÓÐÑ¡Ôñʱ, ²»Í¬µÄÑ¡
* Ôñ¿ÉÄܻᵼÖÂ×îºóÉú³ÉÊ÷µÄȨÊý²»Í¬), Ö±µ½
* q(T) = p(G)-1Ϊֹ, ¼´ T µÄ±ßÊý = G µÄ¶¥µã1 Ϊֹ.
*Ëã·¨ÖÐÎÞȦÐÔµÄÅж¨±È½ÏÂé·³£¬Ó¦¸ÃÓñê¼Ç·¨×îºÃ£¬
*¶Ô¸÷¸ö·ÖÖ§µÄ¶¥µã±êºÅ¡£
*ÎÒû×Ðϸ¿´Ê飬ÆäʵÊéÉÏдµÃºÜÇå³þ£¬ÊÇÀÏʦÌáÐÑµÄ ^_^ ¡£
*²Î¿¼Ê飺2004£¬¡¶Í¼ÂÛ¼°ÆäÓ¦Óá·£¬¿ÆÑ§³ö°æÉ磬Ëï»ÝȪ ±àÖø¡£
*/
#include<iostream>
#include<fstream>
#define N 100
using namespace std;
int n;//½áµãÊý
int a[N][N] = {0};
bool judgeNode(int flagNodes[N]){//ÅжÏÊÇ·ñ»¹ÓÐδ·ÃÎʽáµã
for(int i = 0; i < n; i++)
if(flagNodes[i] == 0) return 1;
return 0;
}
void judgeSub(int flagSub[N], int x, int y){//±ê¼Ç·ÖÖ§
if(flagSub[x] != 0){
if(flagSub[y] == 0) flagSub[y] = flagSub[x];
else{
int min = flagSub[x] < flagSub[y] ? flagSub[x] : flagSub[y];
int max = flagSub[x] + flagSub[y] - min;
for(int i = 0; i ......
/*
*Ëã·¨ÔÀí£º½«Í¼G Öеı߰´È¨Êý´ÓСµ½´óÖðÌõ¿¼²ì,
* °´²»¹¹³ÉȦµÄÔÔò¼ÓÈëµ½TÖÐ(ÈôÓÐÑ¡Ôñʱ, ²»Í¬µÄÑ¡
* Ôñ¿ÉÄܻᵼÖÂ×îºóÉú³ÉÊ÷µÄȨÊý²»Í¬), Ö±µ½
* q(T) = p(G)-1Ϊֹ, ¼´ T µÄ±ßÊý = G µÄ¶¥µã1 Ϊֹ.
*Ëã·¨ÖÐÎÞȦÐÔµÄÅж¨±È½ÏÂé·³£¬Ó¦¸ÃÓñê¼Ç·¨×îºÃ£¬
*¶Ô¸÷¸ö·ÖÖ§µÄ¶¥µã±êºÅ¡£
*ÎÒû×Ðϸ¿´Ê飬ÆäʵÊéÉÏдµÃºÜÇå³þ£¬ÊÇÀÏʦÌáÐÑµÄ ^_^ ¡£
*²Î¿¼Ê飺2004£¬¡¶Í¼ÂÛ¼°ÆäÓ¦Óá·£¬¿ÆÑ§³ö°æÉ磬Ëï»ÝȪ ±àÖø¡£
*/
#include<iostream>
#include<fstream>
#define N 100
using namespace std;
int n;//½áµãÊý
int a[N][N] = {0};
bool judgeNode(int flagNodes[N]){//ÅжÏÊÇ·ñ»¹ÓÐδ·ÃÎʽáµã
for(int i = 0; i < n; i++)
if(flagNodes[i] == 0) return 1;
return 0;
}
void judgeSub(int flagSub[N], int x, int y){//±ê¼Ç·ÖÖ§
if(flagSub[x] != 0){
if(flagSub[y] == 0) flagSub[y] = flagSub[x];
else{
int min = flagSub[x] < flagSub[y] ? flagSub[x] : flagSub[y];
int max = flagSub[x] + flagSub[y] - min;
for(int i = 0; i ......
ÀûÓÃc.vim²å¼þ£¬Äã¿ÉÒÔʵÏÖ
Ìí¼ÓÎļþÍ·
Ìí¼Ó×¢ÊÍ
²åÈëһЩ´úÂëÆ¬¶Î
Óï·¨¼ì²é
¶Áº¯ÊýÎĵµ
×¢ÊÍ´úÂë¿é
ÕâÒ»²å¼þµÄ×÷ÕßÊÇ Fritz Mehner, Ä¿±ê¾ÍÊÇ´òÔì³ÌÐòÔ±Á÷³©µÄ±à¼»·¾³¡£
ÕâÒ»²å¼þ»¹ÄÜÍê³É:
Statement oriented editing of C / C++ programs
Speed up writing new code considerably.
Write code and comments with a professional appearance from the beginning.
Use code snippets
½ÓÏÂÀ´ÎÒÃǶÔÕâÒ»²å¼þÏêϸ½éÉÜ.
3 °²×°²å¼þ
Step 1: ÏÂÔØc.vim
$ cd /usr/src
$ wget http://www.vim.org/scripts/download_script.php?src_id=9679
Step 2: °²×°
$ mkdir ~/.vim
$ cd ~/.vim
$ unzip /usr/src/cvim.zip
Step 3: ÆôÓÃÕâÒ»²å¼þ
$ vim ~/.vimrc
filetype plugin on
8 c.vimµÄʹÓÃ
Feature 1: Add Automatic Header to *.c file
µ±Äãн¨Ò»¸öÀ©Õ¹Ãû.cµÄÎļþʱºò£¬×Ô¶¯ÔÚÎļþÍ·²¿Ôö¼ÓÍ·²¿×¢ÊÍ
$ vim myprogram.c
/*
* =================================================
* Filename: myprogram.c
*
* Description:
*
* Version: 1.0
* Created: 01/19/09 20:23:25
* Revision: none
* ......
#include<stdio.h>
#include<malloc.h>
#include<string.h>
/*
* ·×ª
*/
char *mystrrev(char *arr)
{
if (!arr)
{
return NULL;
}
char *temp = arr;
char t;
int leng = strlen(arr) + 1;
int l = (int)(leng / 2);
int i = 0;
while (l--)
{
t = arr[i];
arr[i] = arr[leng - 2];
arr[leng - 2] = t;
i++;
leng--;
}
return temp;
}
/*
*½ØÈ¡µ¥¸ö´Ê»ã
*/
char *myrev(char *string)
{
if (!string)
{
return NULL;
}
char *temp1 = (char *)malloc(strlen(string) + 1);
char *temp2 = (char *)malloc(strlen(string) + 1);
char *temp3 = NULL;
*temp2 = '\0';
int i = 0;
for (int j=strlen(string); j>=0; --j)
{
temp1[i] = *string;
if (temp1[i] == ' ' || *(string) == '\0')
{
if (!temp3)
{
free(temp3);
temp3 = NULL;
}
temp3 = (char *)malloc(i);
temp1[i] = '\0';
i = 0;
strcpy(temp3, temp1);
strcat(temp2, mystrrev(temp3));
strcat(temp2, " ");
i = -1;
}
i++;
string+ ......
Ö¸ÕëÊÇC/C++ÓïÑÔµÄÌØÉ«£¬¶øÊý×éÃûÓëÖ¸ÕëÓÐÌ«¶àµÄÏàËÆ£¬ÉõÖÁºÜ¶àʱºò£¬Êý×éÃû¿ÉÒÔ×÷ΪָÕëʹÓá£ÓÚÊǺõ£¬ºÜ¶à³ÌÐòÉè¼ÆÕ߾ͱ»¸ãºýÍ¿ÁË¡£¶øÐí¶àµÄ´óѧÀÏʦ£¬ËûÃÇÔÚCÓïÑԵĽÌѧ¹ý³ÌÖÐÒ²´íÎóµÃ¸øÑ§Éú½²½â£º"Êý×éÃû¾ÍÊÇÖ¸Õë"¡£ºÜÐÒÔË£¬ÎҵĴóѧÀÏʦ¾ÍÊÇÆäÖÐÖ®Ò»¡£Ê±ÖÁ½ñÈÕ£¬ÎÒÈÕ¸´Ò»ÈյؽøÐÐ×ÅC/C++ÏîÄ¿µÄ¿ª·¢£¬¶øÉí±ß»¹Ò»Ö±³äÂúÕâÑùµÄ³ÌÐòÔ±£¬ËûÃDZ£Áô×Å"Êý×éÃû¾ÍÊÇÖ¸Õë"µÄÎó½â¡£¡¡¡¡Ïë±ØÕâÖÖÎó½âµÄ¸ùÔ´ÔÚÓÚ¹úÄÚijָÃûµÄC³ÌÐòÉè¼Æ½Ì³Ì¡£Èç¹ûÕâÆªÎÄÕÂÄܹ»¾ÀÕýÐí¶àÖйú³ÌÐòÔ±¶ÔÊý×éÃûºÍÖ¸ÕëµÄÎó½â£¬±ÊÕ߾Ͳ»ÉõÐÀοÁË¡£½è´ËÎÄ£¬±ÊÕßÕ¾ÔÚÎÞÊý¶Ô֪ʶÈç¼¢ËÆ¿ÊµÄÖйú³ÌÐòÔ±Ö®ÖУ¬ÉîÉî¼ÄÏ£ÍûÓÚ¹úÄڵļÆËã»úͼÊé±àдÕßÃÇ£¬ÄÜÒÔ"ÉîÈë̽Ë÷"µÄ˼ά·½Ê½ºÍ¾«ÒæÇ󾫵ÄÈÏÕæÌ¬¶ÈÀ´¶Ô´ýͼÊé±àд¹¤×÷£¬µ«Ô¸ÊÐÃæÉ϶àһЩÈÚÈë×÷Õß˼¿¼½á¾§µÄÐÄѪ֮×÷£¡¡¡¡¡Ä§»ÃÊý×éÃû¡¡¡¡Çë¿´³ÌÐò£¨±¾ÎijÌÐòÔÚWIN32ƽ̨ϱàÒ룩£º1. #include 2. int main(int argc, char* argv[])3. {4. ¡¡char str[10];5. ¡¡char *pStr = str;6. ¡¡cout << sizeof(str) << endl;7. ¡¡cout << sizeof(pStr) << endl;8. ¡¡return 0;9. } ¡¡¡¡1¡¢Êý×éÃû²»ÊÇÖ¸Õë¡¡¡¡ÎÒÃÇÏÈÀ´ÍÆ·"Êý×éÃû¾ÍÊÇÖ¸Õë"µÄ˵·¨£¬Ó÷´Ö¤·¨¡ ......
Ö¸ÕëÊÇC/C++ÓïÑÔµÄÌØÉ«£¬¶øÊý×éÃûÓëÖ¸ÕëÓÐÌ«¶àµÄÏàËÆ£¬ÉõÖÁºÜ¶àʱºò£¬Êý×éÃû¿ÉÒÔ×÷ΪָÕëʹÓá£ÓÚÊǺõ£¬ºÜ¶à³ÌÐòÉè¼ÆÕ߾ͱ»¸ãºýÍ¿ÁË¡£¶øÐí¶àµÄ´óѧÀÏʦ£¬ËûÃÇÔÚCÓïÑԵĽÌѧ¹ý³ÌÖÐÒ²´íÎóµÃ¸øÑ§Éú½²½â£º"Êý×éÃû¾ÍÊÇÖ¸Õë"¡£ºÜÐÒÔË£¬ÎҵĴóѧÀÏʦ¾ÍÊÇÆäÖÐÖ®Ò»¡£Ê±ÖÁ½ñÈÕ£¬ÎÒÈÕ¸´Ò»ÈյؽøÐÐ×ÅC/C++ÏîÄ¿µÄ¿ª·¢£¬¶øÉí±ß»¹Ò»Ö±³äÂúÕâÑùµÄ³ÌÐòÔ±£¬ËûÃDZ£Áô×Å"Êý×éÃû¾ÍÊÇÖ¸Õë"µÄÎó½â¡£¡¡¡¡Ïë±ØÕâÖÖÎó½âµÄ¸ùÔ´ÔÚÓÚ¹úÄÚijָÃûµÄC³ÌÐòÉè¼Æ½Ì³Ì¡£Èç¹ûÕâÆªÎÄÕÂÄܹ»¾ÀÕýÐí¶àÖйú³ÌÐòÔ±¶ÔÊý×éÃûºÍÖ¸ÕëµÄÎó½â£¬±ÊÕ߾Ͳ»ÉõÐÀοÁË¡£½è´ËÎÄ£¬±ÊÕßÕ¾ÔÚÎÞÊý¶Ô֪ʶÈç¼¢ËÆ¿ÊµÄÖйú³ÌÐòÔ±Ö®ÖУ¬ÉîÉî¼ÄÏ£ÍûÓÚ¹úÄڵļÆËã»úͼÊé±àдÕßÃÇ£¬ÄÜÒÔ"ÉîÈë̽Ë÷"µÄ˼ά·½Ê½ºÍ¾«ÒæÇ󾫵ÄÈÏÕæÌ¬¶ÈÀ´¶Ô´ýͼÊé±àд¹¤×÷£¬µ«Ô¸ÊÐÃæÉ϶àһЩÈÚÈë×÷Õß˼¿¼½á¾§µÄÐÄѪ֮×÷£¡¡¡¡¡Ä§»ÃÊý×éÃû¡¡¡¡Çë¿´³ÌÐò£¨±¾ÎijÌÐòÔÚWIN32ƽ̨ϱàÒ룩£º1. #include 2. int main(int argc, char* argv[])3. {4. ¡¡char str[10];5. ¡¡char *pStr = str;6. ¡¡cout << sizeof(str) << endl;7. ¡¡cout << sizeof(pStr) << endl;8. ¡¡return 0;9. } ¡¡¡¡1¡¢Êý×éÃû²»ÊÇÖ¸Õë¡¡¡¡ÎÒÃÇÏÈÀ´ÍÆ·"Êý×éÃû¾ÍÊÇÖ¸Õë"µÄ˵·¨£¬Ó÷´Ö¤·¨¡ ......
ÎÊÌ⣺ÔÚ´æ´¢¹ý³ÌÖУ¬ÓÐʱ»áÓöµ½±È½Ï±ä̬µÄ¶«Î÷£¬ÈçÒ»¸ö´æ´¢¹ý³ÌÖÐÓÐoutput·µ»ØÖµ£¬ÓÐreturn·µ»ØÖµ£¬»¹ÓвéѯµÄ·µ»ØÖµTABLE£¬Óöµ½ÕâÑùµÄ´æ´¢¹ý³ÌÕæÊÇÓôÃÆ£¬Ò»´ÎÐÔ°ÑËùÓеķµ»ØÖµÈ¡³öÀ´»¹ÕæµÄÓеãÂé·³¡£
1¡¢ Ê×ÏÈÀ´¿´Õâ¸ö´æ´¢¹ý³Ì°É
CREATE PROCEDURE ParaTest
@paraout varchar(20) output
AS
BEGIN
SET NOCOUNT ON
SELECT * from USERS
SELECT @paraout = 'outputvalue'
RETURN 10
END
ΪÁË·½±ã´ó¼Ò¿´µÃ¸ü¼ÓÇåÇå³þ³þ£¬ÎÒÒѾ½«Êý¾Ý¸³ÖµÐ´µÃºÜÖ±¹ÛµÄÁË¡£USERSÊÇÒ»¸ö±í
ÔÚsqlÖÐҪȡµÃÕâ¸ö´æ´¢¹ý³ÌµÄ·µ»ØÖµ¿ÉÒÔÓÃÒÔÏ·½Ê½
DECLARE @paraoutput varchar(20)
DECLARE @parareturn varchar(20)
EXEC @parareturn= ParaTest @paraout = @paraoutput output
SELECT @paraoutput AS 'output',@parareturn AS 'return'
½á¹ûÈçÏÂ
2¡¢ ÓÃC££È¡µÃ·µ»ØÖµµÄ·½·¨ÈçÏ£¨²»×ö½âÊÍÁË£¬ºÜ¼òµ¥µÄ£©
string stroutput = "";
&nbs ......
ÎÊÌ⣺ÔÚ´æ´¢¹ý³ÌÖУ¬ÓÐʱ»áÓöµ½±È½Ï±ä̬µÄ¶«Î÷£¬ÈçÒ»¸ö´æ´¢¹ý³ÌÖÐÓÐoutput·µ»ØÖµ£¬ÓÐreturn·µ»ØÖµ£¬»¹ÓвéѯµÄ·µ»ØÖµTABLE£¬Óöµ½ÕâÑùµÄ´æ´¢¹ý³ÌÕæÊÇÓôÃÆ£¬Ò»´ÎÐÔ°ÑËùÓеķµ»ØÖµÈ¡³öÀ´»¹ÕæµÄÓеãÂé·³¡£
1¡¢ Ê×ÏÈÀ´¿´Õâ¸ö´æ´¢¹ý³Ì°É
CREATE PROCEDURE ParaTest
@paraout varchar(20) output
AS
BEGIN
SET NOCOUNT ON
SELECT * from USERS
SELECT @paraout = 'outputvalue'
RETURN 10
END
ΪÁË·½±ã´ó¼Ò¿´µÃ¸ü¼ÓÇåÇå³þ³þ£¬ÎÒÒѾ½«Êý¾Ý¸³ÖµÐ´µÃºÜÖ±¹ÛµÄÁË¡£USERSÊÇÒ»¸ö±í
ÔÚsqlÖÐҪȡµÃÕâ¸ö´æ´¢¹ý³ÌµÄ·µ»ØÖµ¿ÉÒÔÓÃÒÔÏ·½Ê½
DECLARE @paraoutput varchar(20)
DECLARE @parareturn varchar(20)
EXEC @parareturn= ParaTest @paraout = @paraoutput output
SELECT @paraoutput AS 'output',@parareturn AS 'return'
½á¹ûÈçÏÂ
2¡¢ ÓÃC££È¡µÃ·µ»ØÖµµÄ·½·¨ÈçÏ£¨²»×ö½âÊÍÁË£¬ºÜ¼òµ¥µÄ£©
string stroutput = "";
&nbs ......