當一個函式很大時,裡面包含許多component,為了程式碼容易看,
在程式中可以透過大括號把一個函式分成許多部分~
如以下的例子:
#include <stdio.h>
int
main (
)
{
int y = 2;
printf ("Hello, Y value is %d\n", y);
#ifdef FOMLOAD
{
int x = 1;
printf ("X value is %d\n", x);
printf ("Y value is %d\n", y);
}
#endif //#ifndef FOMLOAD
// printf ("X value is %d\n", x); // variable x does not exist in this scope
return 0;
}
如此一來,被FOMLOAD包起來的程式碼,就可以依照FOMLOAD在Build Time的時候就決定要不要被執行~
這樣一來程式碼比較容易讀,在抽取的Component時,也比較容易。
另外,在上面的例子中,在大括號被宣告的int x變數,其能被存取的也只有在大括號中。
如此一來,更可以節省一些記憶體的空間。
另外,為了讓程式設計師比對有使用這一個方式跟沒有的差別。
以下是沒有使用這一個大括號的設計方式的程式碼;
#include <stdio.h>
int
main (
)
{
#ifndef FOMLOAD
int x = 1;
#endif //#ifndef FOMLOAD
int y = 2;
printf ("Hello, Y value is %d\n", y);
#ifdef FOMLOAD
printf ("X value is %d\n", x);
printf ("Y value is %d\n", y);
#endif //#ifndef FOMLOAD
// printf ("X value is %d\n", x); // variable x does not exist in this scope
return 0;
}
如此一來,被FOMLOAD被分散在兩個地方,目前這一個例子的程式碼比較小,可能看不出差異,
當程式碼很大時,這兩個部分可能會被分散在好幾行之後(因為,宣告變數一定要在function的開頭)
這樣程式在可讀性上,就比較差。
Makefile
# Program, flags, etc.
CC = cl
CCFLAGS = /c
OBJ = WithCurelyBrace.obj
TARGET = WithCurelyBrace.exe
!IFDEF NOTSHOW
FLAGS =
!ELSE
FLAGS = /DFOMLOAD
!ENDIF
everything: $(TARGET)
clean:
[tab]del $(OBJ) $(TARGET)
all: clean everything
.c.obj:
[tab]$(CC) $(CCFLAGS) $< /Fo$@ $(FLAGS)
$(TARGET): $(OBJ)
[tab]$(CC) $(OBJ) /Fe$@
指令如下:
nmake all NOTSHOW=1
不會顯示括號內的指令
nmake all
會顯示括號內的指令
沒有留言:
張貼留言