iT邦幫忙

DAY 4
0

21世紀C語言實作及感想系列 第 4

21世紀C語言之4 :第二個範例

  • 分享至 

  • xImage
  •  

直接編譯,不用作者之前的參數(放在註解裏),

/* Compile with:
export CFLAGS="-g -Wall -std=gnu11 -O3"  #the usual.
make getenv

#Sample usage
reps=10 msg="Ha" ./getenv
msg="Ha" ./getenv
reps=20 msg=" " ./getenv
*/
#include <stdlib.h> //getenv, atoi
#include <stdio.h>  //printf

int main(){
    char *repstext = getenv("reps");
    int reps = repstext ? atoi(repstext) : 10;

    char *msg = getenv("msg");
    if (!msg) msg = "Hello.";

    for (int i=0; i< reps; i++)
        printf("%s\n", msg);
}

編譯出現提示的錯誤訊息

$ make getenv
cc getenv.c -o getenv
getenv.c: In function ‘main’:
getenv.c:20:5: error: ‘for’ loop initial declarations are only allowed in C99 mode
for (int i=0; i< reps; i++)
^
getenv.c:20:5: note: use option -std=c99 or -std=gnu99 to compile your code
make: *** [getenv] Error 1

由此錯誤,可看出 gcc 預設用的標準,不是用C99及以後,在C99之前,不能直接宣告型別在for迴圈裏,

這可以做為昨日的一個複習。加深對C99/C11的了解。

這枝範例程式, 示範取得範例變數。

編譯完,使用方式為

#Sample usage
reps=10 msg="Ha" ./getenv
msg="Ha" ./getenv
reps=20 msg=" " ./getenv

從程式傳入兩個變數,reps, msg , 一個數字,一個字串,只要給定變數值,並在程式執行前傳入即可。

沒想到這樣用系統變數。


上一篇
21世紀C語言之3 :編譯參數
下一篇
21世紀C語言之5 :makefile
系列文
21世紀C語言實作及感想30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言