错误预期'char'之前的primary-expression

时间:2012-03-27 06:43:36

标签: c compiler-construction

我有一个问题, 我正在尝试这个

if (strncmp(m_DSServer, "TCP:", 4) != 0 )
    return DS_AS_PROCESS_NAME_INCORRECT;
if
    if(strchr(char *(m_DSServer[4]),':')== NULL) //here it is giving me primary-expression before 'char
        return DS_AS_PROCESS_NAME_INCORRECT;
else
    if(strchr(m_DSServer[4],'/')== NULL)
        return DS_AS_PROCESS_NAME_INCORRECT;

3 个答案:

答案 0 :(得分:2)

如果您想从5.字符开始搜索,请执行

 strchr(&m_DSServer[4],':')

答案 1 :(得分:1)

首先,具有type(value)形式的强制转换语法主要是C ++语法。 C不支持它。你的问题被标记为[C],而不是[C ++]。在C语言中,当您想要执行强制转换时,必须使用(type) value语法。

其次,即使在C ++中,type(value)强制语法要求type部分由“紧凑”类型说明符组成,即使在C ++中,也不能在此使用char *上下文。

第三,无论您使用何种语法,通过将m_DSServer[4]值(显然是char)转换为指针类型,您完全不清楚要做什么。这没有任何意义。

如果您想从字符串:的第4个位置开始搜索m_DSServer个字符,则应该执行strchr(&m_DSServer[4], ':')之类的操作。没有必要的演员表。

答案 2 :(得分:0)

if (strchr(char *(m_DSServer[4]),':') == NULL)
           ^^^^^^^^^^^^^^^^^^^^^

char *(m_DSServer[4])是无稽之谈。我的猜测是你要从第4个字符开始搜索:的字符串。在这种情况下,您需要一个指向第4个字符的指针:

if (strchr(m_DSServer+4,':') == NULL)
           ^^^^^^^^^^^^