在';之前预期的主表达式出错;char';

在';之前预期的主表达式出错;char';,c,compiler-construction,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;

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

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;

如果要从5开始搜索。性格

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

如果要从5开始搜索。性格

 strchr(&m_DSServer[4],':')
char*(mu DSServer[4])
毫无意义。我猜您想在字符串中搜索
,从第4个字符开始。在这种情况下,您需要指向第四个字符的指针:

if (strchr(m_DSServer+4,':') == NULL)
           ^^^^^^^^^^^^
char*(mu DSServer[4])
毫无意义。我猜您想在字符串中搜索
,从第4个字符开始。在这种情况下,您需要指向第四个字符的指针:

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

首先,具有<代码>类型(value)< /C> >表单的CAST语法是一个主要的C++语法。C语言不支持这个问题。您的问题被标记为[C],而不是[C++]。在C语言中,当您要执行强制转换时,必须使用

(type)值
语法

第二,即使在C++中, type(value)< /Cult> CAST语法要求>类型部分由“CypLead”类型说明符组成,即即使在C++中,也不能在该上下文中使用<代码> CHAR*<代码>。 第三,无论使用哪种语法,通过将
m_DSServer[4]
值(显然是
char
)转换为指针类型,完全不清楚您试图做什么。这根本没有任何意义


如果要从字符串
m_DSServer
中的第四个位置开始搜索
字符,应该执行类似于
strchr(&m_DSServer[4],“:”)
的操作。不需要强制转换。

< P>首先,具有<代码>类型(value)< /C> >表单的CAST语法是一个主要的C++语法。C语言不支持这个问题。您的问题被标记为[C],而不是[C++]。在C语言中,当您要执行强制转换时,必须使用
(type)值
语法

第二,即使在C++中, type(value)< /Cult> CAST语法要求>类型部分由“CypLead”类型说明符组成,即即使在C++中,也不能在该上下文中使用<代码> CHAR*<代码>。 第三,无论使用哪种语法,通过将
m_DSServer[4]
值(显然是
char
)转换为指针类型,完全不清楚您试图做什么。这根本没有任何意义


如果要从字符串
m_DSServer
中的第四个位置开始搜索
字符,应该执行类似于
strchr(&m_DSServer[4],“:”)
的操作。无需强制转换。

我想您需要在char*cast周围加上括号。比如(char*)。然而,发布更多的代码可能会有所帮助。另外,if是否真的被复制了,还是输入错误?我试图格式化这段代码,但放弃了。我不明白什么是代码,什么是文本。我怀疑您需要在char*cast周围加括号。比如(char*)。然而,发布更多的代码可能会有所帮助。另外,if是否真的被复制了,还是输入错误?我试图格式化这段代码,但放弃了。我不明白什么是代码,什么是文本。谢谢不,这是我要问的。谢谢不,这是我要问的