调用宏“strcpy”时参数太少- C VSCode

hgb9j2n6  于 2023-02-21  发布在  Vscode
关注(0)|答案(1)|浏览(317)

由于某种原因,下面的代码编译和运行良好,但是在添加C/C++ VsCode扩展之后,我得到一个语法错误,说参数太少。
作为背景,我在main中接收用户输入,将字符串传递给this函数,在这里我使用" \n"作为分隔符对字符串进行标记化,每个标记表示一个不同的“命令”。我在这里的目标是将每个标记存储在不同的索引中以验证它们,然后将最初给定的字符串input传递给不同的函数,因为它需要作为一个值传递。

int login(int socket, char *input) {
    if (socket > 0 && input != NULL && strlen(input) > 0) {
        char buffer[MAX_LINE];
        strcpy(buffer, input);
        strtok(buffer, " \n");

我尝试做的事情的简化版本:

标题:

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

int test(char *input);

主要:

#include "so_test.h"

int main() {
    char buffer[256];
    fgets(buffer, sizeof(buffer), stdin);
    char *delim_1 = strtok(buffer, " \n");
    int func(buffer);
    return 1;
}

定义

#include "so_test.h"

int func(char *input) {
    char input_buff[256];
    strcpy(input_buff, input);  
    char *delim_2 = strtok(input_buff, " \n");
    char *delim_3 = strtok(NULL, " \n");
    return 1;
}

我的Makefile C标志是:set(CMAKE_C_FLAGS "-std=c11 -Wall -Wextra -Wshadow -Werror")
这是因为不同的编译器路径吗?考虑到我没有遇到任何实际的编译或运行时错误?

oknrviil

oknrviil1#

听起来您可能应该忽略“C/C++ VSCode扩展”警告:

  • strcpy()有两个参数:你没有“太多的争论”。
  • strcpy()通常是一个 * 函数 *,而不是“宏”。
  • 如你所说:您的代码编译和运行良好:)

建议:
VSCode扩展警告可能是由“strcpy()"旁边的 else 触发的。
考虑在一个minimal, reproducible example中重现这个问题,如果你可以在一个小型的独立测试中重现它,那么一定要复制/粘贴 * 精确的 * 错误文本和行号。

相关问题