Time of Update: 2018-12-05
ANSI C同較早版本C語言之間的最大區別在於函數的聲明與定義的形式的不同int power(int base, int n);這是ANSI C的函式宣告power(base, n)int base, n;此為早期C語言版本的函式宣告早期C語言版本中參數名在圓括弧內指定, 參數類型在左花括弧之前聲明。如果沒有聲明某個參數的類型,則預設是int類型。
Time of Update: 2018-12-05
/// <summary>/// Gets the UInt64 value from text./// </summary>/// <param name="hexText">The hex or decimal text.</param>/// <param name="result">The UInt64 value.</param>/// <returns>/// <c>true</
Time of Update: 2018-12-05
#include <stdio.h>#include <pcap.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>int main(){char *net_dev;char *ip_addr;char *net_mask;char errbuf[PCAP_ERRBUF_SIZE];bpf_u_int32 netp;bpf_u_int32
Time of Update: 2018-12-05
ARP協議是“Address Resolution Protocol”的縮寫,它的作用是將IP地址轉換成物理地址(就是常說的MAC地址), 協議ARP的分組格式如下:------------------------------------------乙太網路目的地址(6個位元組)乙太網路源地址(6個位元組)框架類型(ARP =
Time of Update: 2018-12-05
#include <iostream>using namespace std;/////////////////////////////////////////////////////////////////////////stack template <class T>class Stack{public:Stack(int size = 50);~Stack();void push(T* data);T* pop();bool isEmpty();T* peek();
Time of Update: 2018-12-05
#include "sqlist.h"Status Compare(ElemType e1,ElemType e2){if(e1==e2)return TRUE;elsereturn FALSE;}Status Output(ElemType e){printf("%d\t",e);return OK;}Status InitList(SqList *L){L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L-&
Time of Update: 2018-12-05
前段時間用C++實現了一個資料庫連接的類,類中包含了一些串連和斷開操作。我想在java中調用這些功能。jni方法提供了只是函數介面的調用而沒有類的調用(有關函數介面調用的網上有很多資料非常簡單,可以自行查閱),後來決定採用用c/c++函數重新封裝類裡的操作的方法,使得java在調用時直接調用c/c++提供裡面的函數介面而不直接調用類。在看該文時建議先看一下jni的使用。現在一步步往下做。為了簡化操作,這裡不使用資料庫連接的類,而是編寫了一個有關兩個整數運算的類來類比資料庫類。該類實現整數的加減乘
Time of Update: 2018-12-05
摘至《LinuxC編程一站式學習》3.1 Integer Promotion在一個運算式中,凡是可以使用int 或unsigned int 類型做右值的地方也都可以使用有符號或無符號的char 型、short 型和Bit-field。如果原始類型的取值範圍都能用int 型表示,則其值被提升為int 型,如果表示不了就提升為unsigned int 型,這稱為Integer Promotion。做Integer Promotion隻影響上述幾種類型的值,對其它類型無影響。C99規定Integer
Time of Update: 2018-12-05
/* * chat_client.h * * Created on: 2012-4-19 * Author: root */#ifndef CHAT_CLIENT_H_#define CHAT_CLIENT_H_#include <iostream>#include <string>#include <fcntl.h>#include <arpa/inet.h>#include <netinet/in.h>#include
Time of Update: 2018-12-05
文章目錄 1.大尾(big endian)vs.小尾(little endian)2.位欄位的分配3.記憶體對齊4.字元集1.檔案包含宏2.內容1.困惑2.曆史遺留問題 關於C的思考Cong WangMay, 2006 Network Engineering DepartmentInstitute of Post and Telecommunications, Xi'an,
Time of Update: 2018-12-05
轉自http://www.asarea.cn/showdiary.jsp?id=193許久沒有寫技術日誌了,今天寫一篇關於字串轉換的。大家都知道,在標準c++中有string和wstring,前者為多位元組ANSI字串,後者為寬位元組wide字串(UTF-16)。在一些應用中常常需要在二者之間以及與UTF-8之間進行字串轉換,這裡提供一個自己寫的類,用於之間的轉換。原理是利用windows的api:WideCharToMultiByte、MultiByteToWideChar。這兩個api的第一
Time of Update: 2018-12-05
volatile關鍵字是一種類型修飾符,用它聲明的類型變數表示可以被某些編譯器未知的因素更改。用volatile關鍵字聲明的變數i每一次被訪問時,執行組件都會從i相應的記憶體單元中取出i的值。沒有用volatile關鍵字聲明的變數i在被訪問的時候可能直接從cpu的寄存器中取值(因為之前i被訪問過,也就是說之前就從記憶體中取出i的值儲存到某個寄存器中),之所以直接從寄存器中取值,而不去記憶體中取值,是因為編譯器最佳化代碼的結果(訪問cpu寄存器比訪問ram快的多)。以上兩種情況的區別在於被編譯成彙
Time of Update: 2018-12-05
今天編程時想在類中聲明一個常量數組,發現無法初始化,後來在網上搜尋,證明這是一個無法解決的問題。 因為根據C++文法,常量聲明必須要在建構函式後用參數方式初始化,而x({1.0,2.0})又不符合文法。 只能聲明成static類型,然後在源檔案裡定義。 // a.hclass A{private: static const int xx[10];} // a.cppconst A::xx[10] = {1,2,3,4,5,6,7,8,9,0};
Time of Update: 2018-12-05
1、undefinedreference to '__gxx_personality_v0'編譯器用的是gcc,請換成g++2、將一個源檔案由.cpp 改為.cc
Time of Update: 2018-12-05
在linux裡,提到網路編程,就會涉及到select,多工IO,雖然這個效率不是很高,但是對於一般應用還是足夠了。我寫了一個小程式,如下: #include <sys/select.h>#include <sys/socket.h>#include <stdio.h>#define NUM 2000int fds[NUM];int main(){ for( int i = 0; i < NUM; ++i ) { printf("
Time of Update: 2018-12-05
不久的將來將會建立一個c++庫source:#include <stdio.h>extern "C" int main(int argc, char *argv[]);extern "C" void text_puts(int x, int y, const char *str, char c);int main(int argc, char *argv[]){ text_puts(20,10, "Jicama OS Platform First c plus plus (C++)
Time of Update: 2018-12-05
起因是因為一片文章,問到了一個問題,文章是這樣的:Originally Posted by 人就是這樣我想編一個程式,但學CompSci是很久以前的事情了。想請教請教大家。有兩個txt檔案,一個叫source.txt(有很多資料), 一個叫target.txt(空白的)我想把source.txt裡的一些資料提取出來(稍微修改一下),然後寫到target.txt裡面。舉個例子:sourse.txt裡的資料:2oi)4@##(
Time of Update: 2018-12-05
在方法、屬性的繼承中,new關鍵字表示隱藏基類的實現,使得子類也可以定義與基類同名同形參的方法和屬性。而override關鍵字表示重寫,基類的方法或屬性在子類中被重寫後,調用子類的方法或屬性一定會從子類執行。說得可能很拗口,但是舉個例子一看就明白了。先看new關鍵字的例子:基類 ControlModel.csusing System;namespace InhibitPropertyDemo{ public class ControlModel { private
Time of Update: 2018-12-05
共用一堆位操作相關的方法:// -----------------------------------------------------------------------// <copyright file="UInt64MaskHelper.cs" author="Yaping Xin">////// File Name : UInt64MaskHelper.cs// Description : Helper class to
Time of Update: 2018-12-05
這兩天又看了幾眼Socket編程,我老是沒長性,總是東看看西看看。還老愛挑毛病,鑽牛角尖,真是不可救藥了。這不,又開始看Socket不順眼了。當時是看了一個朋友給我的一段socket raw編程的代碼,有一段看的我很噁心。如下:if((ErrorCode=WSAStartup(MAKEWORD(2,1),&wsaData))!=0){ printf("WSAStartup failed: %d/n",ErrorCode); return 2; }