2017-06-16 42 views
0

所以我即將在C語言程序中完成大學課程。 我想在位操作(如創建口罩)更好,所以我會去給它:面具(比特宏)

#define BIT_I_SET(TYPE,I) ((TYPE)(1) << (I)) 
#define SET_BIT(NUM,I,TYPE) \ 
     NUM |= BIT_I_SET(I,TYPE) 

我仍然在早期階段,學習此刻的語法,我不知道爲什麼編譯器說,有一個錯誤: 嚴重性代碼描述項目文件中的行抑制狀態 錯誤之前明顯通話括號必須有(指針TO-)函數類型Project14(活動)E0109表達

完整程序(是它是synatx只):

#include <stdio.h> 
#include <stdlib.h> 

#define SHIFT(I,TYPE) ((TYPE)(1) << (I)) 
#define NEGATIVE(TYPE) (~(TYPE)(0)) 
#define BIT_I_SET(TYPE,I) ((TYPE)(1) << (I)) 
#define BIT_I_CLEAR(I,TYPE) (~((TYPE)(1)<< (I))) 
#define MSB_SET(TYPE) ((TYPE)(1) << (sizeof(TYPE)*8-1) 
#define SET_BIT(NUM,I,TYPE) \ 
     NUM |= BIT_I_SET(I,TYPE) 
void main() 
{ 
    unsigned char i, j; 
    int shift = 3; 
    i = 0; 
    j = 0; 

    SET_BIT(j, 2, unsigned char); 
    printf("%d\n",sizeof(j)); 
    printf("%d",i); 
    system("pause>null"); 
} 

回答

0

變化

NUM |= BIT_I_SET(I,TYPE) 

NUM |= BIT_I_SET(TYPE, I) 

您可以運行只是你的編譯器,使用命令其展開宏 的預處理階段:

gcc -E file.c