Limited space! Get on waitlist to be the first to know when tickets go live!

fossBytesã«6æ14æ¥(ç±³å½æé)ã«æ²è¼ãããè¨äºãMicrosoft Open Sources "Checked C" â An Extended Version Of C To Avoid Coding ErrorsãããMicrosoftã«ããéçºãé²ãããã¦ãããChecked Cãã¨å¼ã°ããæè¡ã«ã¤ãã¦ä¼ããããChecked Cãã¯Cè¨èªãæ¡å¼µããæ©è½ã§ãããå®å ¨ãªã³ã¼ãã£ã³ã°ãå¯è½ã«ãªãã¨ããã¦ããã Microsoftã®ã½ããã¦ã§ã¢ã®å¤ãã¯C/C++ã§éçºããã¦ãããCè¨èªã¯ãã¤ã³ã¿ã®æ±ããééããã¨æ¬æ¥ã¢ã¯ã»ã¹ãã¦ã¯ãããªãã¡ã¢ãªãæããæä½ããã¦ãã¾ããã¨ããããããããã°ãèå¼±æ§ã®åå ã®1ã¤ã«ãªã£ã¦ããããChecked Cãã¯ããããåé¡ãåé¿ãããã¨ãç®æãã¦Cè¨èªã®æ©è½ãæ¡å¼µãããã®ã§ããã¤ã³ã¿ã«å¯¾ãã¦ãããããç¯å²æ å ±ãæããã¦ããããã¤ã³ã¿ã®æã示ã
ICSE 2016åå¼·ä¼ã«åå ããããã«è«æãªã¹ãã確èªãã¦ãããã40å¹´éã®Cè¨èªã®ãã©ã¯ãã£ã¹ã®å¤é·ã追ã£ãè«æããããããã£ãã®ã§ç´¹ä»ããã 対象ã®è«æ è«æ: The Evolution of C Programming Practices: A Study of the Unix Operating System 1973â2015 è«æä¸ã§ä½¿ãããããã¼ã¿: https://github.com/dspinellis/unix-history-repo è¦ç´ éå»40å¹´éã®Unixã®ã½ã¼ã¹ã³ã¼ããåæããã³ã¼ãã£ã³ã°ã¹ã¿ã¤ã«ã®å¤åã調æ»ããããã®çµæã以ä¸ã®ãã¨ãåãã£ãã æ°ããè¨èªæ©è½ã¯ä¾¡å¤ã®ãããã®ãªãã°æ¡ç¨ããã ã¬ã¸ã¹ã¿å²ãå½ã¦ãã³ã³ãã¤ã©ã«ä»»ããããã«ãªã ã¹ãã¼ã¹ãã©ãã«ãããããªã©ã®ã³ã¼ãã®æ¸ãæ¹ãçµ±ä¸ããã¦ãã åæå¯¾è±¡ 1972年以éã«ãªãªã¼ã¹ãããè¨66å
Linuxã«ã¼ãã«ã®ã³ã¼ããèªãã§ã¦ããªãã»ã©ãã¨æããã¨ã¯ãããããã©ããã®ä¸ã§ãç¹ã«ä»ã¾ã§ã®èãæ¹ãã¶ã¡å£ãã¦ãããã®ã¯ãªãã ã£ãã¨æã£ãã¨ããããã£ã±ããªã¹ãæ§é ããªã¨è¨ãã¨ããã cè¨èªã§ãªã¹ãæ§é ãä½ãå ´åãä¸è¬çãªæç§æ¸æ¹å¼ã ã¨âã®ããã«ãã¼ã¿ã¨nextãã¤ã³ã¿ã¯å¯çµåã«ãªã£ã¦ãã¨æãã¾ããããã®å ´åãstruct foobarã®ãã¤ã³ã¿ãnextè¦ç´ ã«ä½¿ã£ã¦ããã®ã§ãä»ã®æ§é ä½ï¼ä¾ãã°ãstruct hogehogeï¼ã§åããã¨ããããã¨ããã¨ããã®æ§é ä½ã§ã¯struct hogehoge *nextã¨ããã¡ã³ã夿°ãæã¤å¿ è¦ãããã¾ãã ãããè¦ç´ ã¯struct foobarã§ãã struct foobar { int n; char s[64]; struct foobar *next; }; struct foobar head; Linuxã«ã¼ãã«ã®å ´åããã¼ã¿ã¨ãª
(åç·¨ã¯ãã¡ãï¼ 2016å¹´ãCè¨èªã¯ã©ãæ¸ãã¹ãã (åç·¨) ) (編注ï¼2020/08/18ãããã ãããã£ã¼ãããã¯ããã¨ã«è¨äºãä¿®æ£ãããã¾ããã) ã·ã¹ãã ä¾åã®å ã¾ã ã32 bitã®ãã©ãããã©ã¼ã ã§ã¯32 bitã®longåã64 bitã®ãã©ãããã©ã¼ã ã§ã¯64 bitã®longåããããã¨ãã䏿ºãããããã§ããã ãã©ãããã©ã¼ã ã«ä¾åãã2ã¤ã®ç°ãªããµã¤ãºã使ãããã æ æã« ã³ã¼ããé£ãããããã¨ãèããããªããã°ãã·ã¹ãã ä¾åã®åã®ããã« long ã使ããã¨ã¯æããªãã§ãããã ãã®ç¶æ³ã§ã¯ããã©ãããã©ã¼ã ã®ããã«ãã¤ã³ã¿å¤ãä¿æããæ´æ°åã intptr_t ã使ãã¹ãã§ãã ã¢ãã³32-bitãã©ãããã©ã¼ã ã§ã¯ã intptr_t 㯠int32_t ã§ãã ã¢ãã³64-bitãã©ãããã©ã¼ã ã§ã¯ã intptr_t 㯠int64_t ã§ãã int
(訳注ï¼2016/3/2ãããã ãã翻訳ãã£ã¼ãããã¯ããã¨ã«è¨äºãä¿®æ£ãããã¾ããã) (訳注ï¼èè ã®Mattããããæ¬æä¸ã§æè¨ã¯ãã¦ããªããããã®è¨äºã®å 容ã¯x86-64 Unix/Linux/POSIXã§ã¢ããªã±ã¼ã·ã§ã³ãããã°ã©ãã³ã°ããå ´åã«ãã©ã¼ã«ã¹ãã¦ãããä»ã®ããã°ã©ãã³ã°é åã§ã¯ã対象ã¨ããã·ã¹ãã ã«å¿ãã(ä¾ï¼ 8-bitã®çµã¿è¾¼ã¿ã·ã¹ãã ã10å¹´åã®ã³ã³ãã¤ã©ãå¤ãã®ç°ãªãCPUã¢ã¼ããã¯ãã£ã§åãå¿ è¦ã®ããã¢ããªã±ã¼ã·ã§ã³ãWin/Linuxã§ã®ãã«ãäºææ§ãªã©)ç¹æã®ã¢ããã¤ã¹ãå¿ è¦ãã¨ã®è£è¶³ãé ãã¦ããã¾ãã) 以ä¸ã®æç« ã¯2015å¹´ã®å§ãã«æ¸ãããã©ããã§ãä»ã¾ã§å ¬éãã¦ãã¾ããã§ãããç§ã®ãã©ããç¨ãã©ã«ãã®ä¸ã§èª°ã®ç®ãå¼ããªãã£ãããã大é¨åãæ¸ããæã®ã¾ã¾ã§ããå ¬éããã«ããããåç´ã«2015å¹´ã2016å¹´ã«å¤æ´ãã¾ããã å¿ è¦ãªä¿®æ£ãæ¹åãè¦æ ããã
ã¯ããã¾ãã¦ããµã¼ããµã¤ãã¨ã³ã¸ãã¢ã® @DQNEO ã§ãã 仿¥ã¯Gitã®ã¤ããããããç´¹ä»ãã¾ãã Cè¨èªå¦ç¿ææã¨ãã¦ã®Git Gitã¨åããã®ãã¼ãããä½ã£ã¦ä½ã®æå³ãããã®ãï¼ã¨æãã¾ãããã ç§ããã®åçºæãããå§ããåæ©ã¯ãCè¨èªãæ¸ããããã«ãªããããã§ããã å®éã«éä¸ã¾ã§ãã£ã¦ã¿ãã¨ããã Cè¨èªããã§ãããããããã«ãªã£ã Gitã®å 鍿§é ã«è©³ãããªã£ã ã¨ããã¡ãªãããå¾ããã¾ããã Cè¨èªãåå¼·ãã顿ã¯ããããªã¹ã¨ãWebãµã¼ãã¨ãä»ã«ãããã§ãããã®ã§ãããGitãå®è£ ãã¦ã¿ãã®ã¯ããªãããããã§ããçç±ã¯ä¸è¨ã®éãã§ãã å 鍿§é ãæå¤ã¨åç´ (ãã¼ã«ã«ã§åããåã«ã¯)ãããã¯ã¼ã¯ã®ç¥èãä¸è¦ æ®æ®µä½¿ã£ã¦ãããã¼ã«ã§å¤é¨ä»æ§ãããã£ã¦ããã®ã§ãããã¹ããã¨ãæç¢º ä½è«ã§ãããæ¬å®¶Gitã®ã½ã¼ã¹ã³ã¼ããåèã«ãããã¨æã£ã¦èªãã§ããããLinus Tovals
gcc ã§ã³ã³ãã¤ã«ããå ´åã颿°ã®å ¥å£ã¨åºå£ã§å¥ã®é¢æ°ãå¼ã¶ãã¨ãã§ããã ã¾ããã³ã³ãã¤ã«æã« -finstrument-functions ãä»ãã¦ãã³ã³ãã¤ã«ãã¦ããã ããã¨ãå颿°ã®å ¥å£ã¨åºå£ã§ void __cyg_profile_func_enter(void* func_addr, void* call_site); void __cyg_profile_func_exit(void* func_addr, void* call_site); ãå¼ã°ããã®ã§ããããã®é¢æ°ãå ±æã©ã¤ãã©ãªã¨ãã¦ç¨æãã¦ããã¦ä½¿ãã
ç±ç·æ£ããã½ã¼ã¹ã³ã¼ããã¡ã³ããã³ã¹ãã¦ããã¨ã大éã® #ifdef åå²ã«æ³£ãããããã¨ããããããã ãããã½ã¼ã¹ã³ã¼ãã Makefile ã§å®ç¾©ããã¦ããããªããã»ããµã¼ï¼ã¤ã¾ã #define ã -D ãªãã·ã§ã³ï¼ããããããåæãããï¼ãããã ãåå²ã«ä½¿ããããã®ã ããçãæã¡ããã便å©ãããªããï¼ãã¨ããããã¡ãæ¡ä»¶åå²ãã¯ãã«ä½¿ããã¦ããããªããã»ããµã¼ãæ½åºããã¹ã¯ãªãããã§ã£ã¡ããã¦ã¿ããï¼ #! /bin/sh extract_ifdef_branch() { find . -type f -name "*.h" -o -type f -name "*.c"\ |while read f; do egrep '^[[:blank:]]*#[[:blank:]]*if' $f; done } # convert tab to space, and shrink mul
ãã¼ã¯ã¼ã const ã¯ãC++ ã®å¤æ°ï¼ãªãã¸ã§ã¯ãï¼ã宿°ã§ãããã¨ã示ããã®ã§ããããªãã¸ã§ã¯ãã®å 容ã夿´ã§ããªããã¨ããã¢ã¯ã»ã¹å¶å¾¡ãè¡ãã¨ãã«ä½¿ãããã§ããç°¡åã§ããããã¤ã³ã¿ã¨çµ¡ã㨠const ãæ¸ãä½ç½®ã«ãã£ã¦æå³ãå¤ããã®ã§ããã®ããããã¾ã¨ãã¦ããã¾ããããå¾åã§ã¯ãã¯ã©ã¹ã¨å ±ã«ä½¿ç¨ããå ´åã«ã¤ãã¦ã解説ãã¾ãã æãç°¡åãªå ´å ãã¤ã³ã¿ã絡ãå ´å const ãªã¯ã©ã¹ã®ã¡ã³ã夿° const ãªã¯ã©ã¹ãªãã¸ã§ã¯ãã使ãå ´å æãç°¡åãªå ´å ãã¼ã¸ã®å é 㸠const ã使ããæãç°¡åãªå ´åã¨ã¯ãä¾ãã°ã夿´ããªãæ´æ°ã®å®æ°ãå®ç¾©ãããããªå ´åã§ããããæ¬¡ã®ä¾ãè¦ã¦ãã ããã夿° iL1ãiL2 ã¯ã宿°ã¨ãªããå¤ã夿´ã§ãã¾ããã int main() { // int å夿°ã¨ const int iL0 = 200; const int iL1 = 200;
ã¹ãã¼ãªã¼ by hylom 2014å¹´12æ10æ¥ 18æ53å ã³ã³ãã¥ã¼ã¿ã®ä»çµã¿ãç¥ãä¸ã§ãç¥ã£ã¦ããã¦æã¯ãªãã é¨éãã 1972å¹´ã«Cè¨èªãä½ããã¦ä»¥éãæ°å¤ãã®ããã°ã©ãã³ã°è¨èªãçã¾ããæ¶ãã¦ãã£ããCããã°ã©ãã¼ã対象ã«ããæ±è·æ å ±ã®ä»¶æ°ã¯çªåºãã¦ããã¨ã¯ããããRedditã®Cã³ãã¥ããã£ã¼ã®ã¦ã¼ã¶ã¼æ°ã¯C++ã®ååç¨åº¦ã«ã¨ã©ã¾ã£ã¦ãããã®ã®ãCè¨èªã¯2014å¹´ã®TIOBE Indexã§ãã¹ã¦1ä½ãç²å¾ãããªã©ãç¾å¨ãé«ã人æ°ãä¿ã£ã¦ããã David Boltonæ°ã«ããã°ããªãã¸ã§ã³ã®å¤ãCè¨èªãæ°ããCã³ã³ãã¤ã©ã¼ããµãã¼ããã¦ããç¹ãCè¨èªã§æ¸ãããå¤ãã®ã½ããã¦ã§ã¢ãç¾å¨ã使ããã¦ãããã¤ã³ã¿ã¼ãããã®åºç¤ã«ããªã£ã¦ããç¹ãå¦ç¿ã容æãªç¹ãªã©ãè¤æ°ã®è¦ç´ ã«ããCè¨èªã21ä¸ç´ã®ç¾å¨ã大ããªæç¾©ãæã¡ç¶ãã¦ããã®ã ã¨ããã ãCè¨èªãç¥ããã¨ã§ãC++ãObj
å¤ããç¥ããã®ã¯å°ãªãèªã Who knows most says least. ä»®æ³é¢æ°ããã³ãã¬ã¼ã颿°çãåãã·ã³ã¿ãã¯ã¹ã§è¤æ°ã®ä½¿ããæ¹ããããããªé¢æ°ã§ã¯ã使ç¨ããªã仮弿°ã¨ãããã®ãç»å ´ãããã¨ãããã¾ããä¾ãã°ã class ClassBase { virtual func(int hint); }; class ClassA : pulic ClassBase { virtual func(int hint); }; void ClassA::func(int hint) { // ãã®Classã®funcã§ã¯ä»®å¼æ°hintã¯ä¸è¦ãªã®ã§ä½¿ç¨ããªã ... } ä»®æ³é¢æ°ããã³ãã¬ã¼ã以å¤ã§ãã颿°ä»æ§ã¨ãã¦æ¡å¼µæ§ãæãããããã«ç¨æããã¦ãããã®ã®ãç¾ç¶ã§ã¯ä½¿ç¨ããªãå ´åçãèããããã§ãããã ãã¦ããã®ãããªä½¿ç¨ããªã仮弿°ã使ç¨ããªãã ãã§ãåä½ä¸åé¡ã¯ãªãã®ã§ãããã³
æè¿H2Oã¨ããHTTPãµã¼ããæ¸ãã¦ããã®ã§ããããããã¡ã¤ã«ãåã£ã¦ã¿ãã¨sprintfãçµæ§ãªæéãé£ã£ã¦ãã¦ä¸æºã«æãã¦ãã¾ãããå®éãsprintfã¯æ°å¤ãæååããã©ã¼ãããããã®ã«åå¾³ãã¤ãçã«ä¾¿å©ãªã®ã§ãHTTPãµã¼ãã«éããè¯ã使ãããï¼ããã¦CPUæéãæ¶è²»ããã¡ãªï¼é¢æ°ã§ãã ã§ã¯ãsprintfãæé©åããã°ãæ§ã ãªããã°ã©ã ã ããé«éã«åä½ããããã«ãªãã®ã§ã¯ãªãã§ãããããã¨ãããã¨ã§ä½ã£ãã®ããqrintfã§ãã qrintfã¯ãCããªããã»ããµã®ã©ããã¼ã¨ãã¦ã½ã¼ã¹ã³ã¼ãã«å«ã¾ããsprintfã®å¼åºãã©ã¼ããããè§£æãããã©ã¼ãããã«ããããã³ã¼ãã«æ¸ãæãããã¨ã§ãsprintfãé«éåãã¾ãã ãã¨ãã°ã以ä¸ã®ãããªIPv4ã¢ãã¬ã¹ãæåååããã³ã¼ãçã sprintf( buf, "%d.%d.%d.%d", (addr >> 24) & 0xf
é·ãæ´å²ãæã¡ãªãããä¾ç¶ã¨ãã¦äººæ°ã®é«ãCè¨èªããã®ææ°ä»æ§ã®æ å ±ã«ãã£ããã¢ããããããã®é£è¼ã¹ã¿ã¼ããä»åã¯1999å¹´ã«çå®ããããC99ããåãä¸ããã é£è¼ INDEX 次å â Cè¨èªï¼ä»¥éãåã«Cï¼ã¯Dennis Ritchieã«ãã£ã¦1969ï½1973å¹´ã®éã«ãã«ç ã«ã¦éçºãããããã°ã©ãã³ã°è¨èªã§ãããé·ãæ´å²ãæã¤ã¨å ±ã«é常ã«ããã¥ã©ã¼ãªè¨èªã§ãããã°ã©ãã¼ã§Cãç¥ããªã人ã¯ã¾ãããªãã¨è¨ã£ã¦ããã ãããããã°ã©ãã³ã°è¨èªã®ã·ã§ã¢ã調æ»ãã¦ããTIOBEã§ããããæè¿ã¯å¸¸ã«1ã2ä½ãå ãã¦ããã Cã®è¨èªä»æ§ã¯ä»ãã25å¹´è¿ãåã§ãã1989å¹´ã«åãã¦è¦æ ¼åãããããã¯ä¸è¬ã«ãANSI-Cãã¨å¼ã°ãã¦ãããANSI-Cã¯é·ããCã®è¨èªä»æ§ã®ã¹ã¿ã³ãã¼ãã®ä½ç½®ãå ããä¸ã®ä¸ã®å¤§åã®ããã°ã©ãã¼ã¯ããã®ANSI-Cã«æ £ã親ããã§ãããã¨ã ãããããããå®ã¯Cã®è¨èªä»æ§ã¯ãã®
C è¨èªã§ HTTP ã¯ã©ã¤ã¢ã³ããä½ã£ã¦ã¿ãã (2) å ¥åºåã©ã¤ãã©ãª åãã¼ã¸ ã®ãµã³ãã«ã§ã¯ãã½ã±ããã«å¯¾ããå ¥åã»åºåã«ã ãããã readã»write ã使ã£ã¦ãã¾ããã ããããã§ããã°ä¾¿å©ãªæ¨æºå ¥åºåã©ã¤ãã©ãªãã¤ã¾ã printf ã fgets ãªã©ã使ããããã®ã§ãã read/write ã§å ¥åºåãè¡ãã¨ãã«ã¯ãsocket ã§å¾ãããã½ã±ãããã£ã¹ã¯ãªãã¿ã¨ãã æ´æ°å¤ããã®ã¾ã¾å©ç¨ãã¾ããã䏿¹ãprintf ã fgets ã®å ¥åºåã®éã¯ã FILE æ§é ä½ãå¿ è¦ã«ãªãã¾ããããã§ fdopen ã¨ããã ãã£ã¹ã¯ãªãã¿ãã FILE æ§é ä½ãçæãã ã©ã¤ãã©ãªé¢æ°ã使ãã¾ããä½¿ãæ¹ã¯ FILE *fp; fp = fdopen(fd, "r"); ã§ããfd 㯠open ã socket ã§å¾ããããã£ã¹ã¯ãªãã¿ (int å) ã§ãã fopen ã®
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}