错误:预期的标识符或'('之前' volatile'

时间:2014-07-09 06:09:24

标签: c compiler-errors

我尝试编译代码来修改地址并出错。这是代码的初始部分。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <fcntl.h>
#include <sys/types.h>


#define FATAL do { fprintf(stderr, "Error at line %d, file %s (%d) [%s]\n",__LINE__, __FILE__, errno,    strerror(errno)); exit(1); } while(0)
#define MAP_SIZE 4096UL
#define MAP_MASK (MAP_SIZE - 1)

void GenerateDelay(int val);

int main(void) {
    int fd;
    int *map_base_c,*map_base_d, *map_base_p, *virt_addr;
    off_t target;
    off_t rTCF0,rTCON,rTCNTB0,rTCMPB0,rTCNTO0;  // The error is at this line (115)

    rTCFG0  =  0x51000000;  //Timer 0 configuration
    rTCON   =  0x51000008;  //Timer rTCON
    rTCNTB0 =  0x5100000c;  //Timer count buffer 0
    rTCMPB0 =  0x51000010;  //Timer compare buffer 0    
    rTCNTO0 =  0x51000014;  //Timer count observation 0
    return 0;
}

它显示的错误是

pwmTry.c: In function 'main':
pwmTry.c:115: error: expected identifier or '(' before 'volatile'
pwmTry.c:115: error: expected ')' before numeric constant

我在代码中指出了第115行 我不明白代码有什么问题 - 我之前已经多次犯过这个错误,我只需要删除有问题的行。这里虽然错误在声明中,所以我无法删除它。

我编写了另一个看起来非常相似的代码并且编译时没有错误。这是:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <fcntl.h>

#define FATAL do { fprintf(stderr, "Error at line %d, file %s (%d) [%s]\n",__LINE__, __FILE__, errno, strerror(errno)); exit(1); } while(0)
#define MAP_SIZE 4096UL
#define MAP_MASK (MAP_SIZE - 1)

void GenerateDelay(int val);

int main(void) {
    int fd;
    int *map_base_c,*map_base_d, *map_base_p, *virt_addr;

    off_t target,control,data,pullup;

    //following the configuration order of setting 
    //1. Data register
    //2. Control register
    //3. Pullup register
    control=0x56000010;
    data   =0x56000014; 
    pullup =0x56000018;
    return 0;
}

1 个答案:

答案 0 :(得分:3)

keltar的comment使我们能够找到问题。

我做了以下事情:

  

arm-linux-gcc-4.3.2 -E pwmTry.c

并且发现名称rTCON等已在其他地方定义为宏。其中存在问题。

这是一个非常有价值的提示,谢谢!