【发布时间】:2012-02-19 17:54:28
【问题描述】:
我正在尝试在需要能够在 Linux 和 Windows 中编译的 C 程序中使用此函数。起初我尝试使用 strtok_r,但是当我在 windows 上编译时,它抱怨该函数不存在并说它会假定它是一个外部函数,但后来失败了。然后我使用了 strtok_s 并编译了它!然后我在 Linux 上尝试过,但现在它抱怨有一个“未定义的对‘strtok_s’的引用”。
一个是只有windows的功能,另一个是linux的功能???我该怎么做才能让它同时编译?
【问题讨论】:
-
strtok_r()是 POSIX;strtok_s()是 Windows。使用普通的strtok(),它在所有实现中都可用(支持C89)。 -
问题是我需要 strtok 一个字符串同时 strtok-ing 另一个字符串,这就是为什么我需要这个,因为它保存状态。
-
@pmg - 除非您需要线程或缓冲区溢出安全
-
@MartinBeckett 等等什么?它在哪里拯救国家?只有两个参数,一个是 NULL(在第二个标记上),另一个是您要查找的字符。我希望能够strtok一个字符串,在该字符串中找到一些东西并strtok那个,然后回到原始字符串并继续strtok它。
-
这是一个古老的问题,但我觉得有必要指出 strtok_s 是 C11,而不仅仅是 Windows。
标签: c windows linux compiler-errors strtok