Tcl\_WrongNumArgs(3) Tcl Library Procedures Tcl\_WrongNumArgs(3)

```

```

# [NAME](#NAME)

Tcl\_WrongNumArgs - generate standard error message for wrong number of arguments

# [SYNOPSIS](#SYNOPSIS)

```
#include <tcl.h>

Tcl_WrongNumArgs(interp, objc, objv, message)
```

# [ARGUMENTS](#ARGUMENTS)

Tcl\_Interp *interp* (in)

Interpreter in which error will be reported: error message gets stored in its result value.

Tcl\_Size *objc* (in)

Number of leading arguments from *objv* to include in error message.

Tcl\_Obj \*const *\*objv* (in)

Arguments to command that had the wrong number of arguments.

const char *\*message* (in)

Additional error information to print after leading arguments from *objv*. This typically gives the acceptable syntax of the command. This argument may be NULL.

```
    
```

# [DESCRIPTION](#DESCRIPTION)

**Tcl\_WrongNumArgs** is a utility procedure that is invoked by command procedures when they discover that they have received the wrong number of arguments. **Tcl\_WrongNumArgs** generates a standard error message and stores it in the result value of *interp*. The message includes the *objc* initial elements of *objv* plus *message*. For example, if *objv* consists of the values **foo** and **bar**, *objc* is 1, and *message* is “**fileName count**” then *interp*'s result value will be set to the following string:

```
wrong # args: should be "foo fileName count"
```

If *objc* is 2, the result will be set to the following string:

```
wrong # args: should be "foo bar fileName count"
```

*Objc* is usually 1, but may be 2 or more for commands like **string** and the Tk widget commands, which use the first argument as a subcommand.

Some of the values in the *objv* array may be abbreviations for a subcommand. The command **Tcl\_GetIndexFromObj** will convert the abbreviated string value into an *indexObject*. If an error occurs in the parsing of the subcommand we would like to use the full subcommand name rather than the abbreviation. If the **Tcl\_WrongNumArgs** command finds any *indexObject*s in the *objv* array, it will use the full subcommand name in the error message instead of the abbreviated name that was originally passed in. Using the above example, let us assume that *bar* is actually an abbreviation for *barfly* and the value is now an *indexObject* because it was passed to **Tcl\_GetIndexFromObj**. In this case the error message would be:

```
wrong # args: should be "foo barfly fileName count"
```

# [REFERENCE COUNT MANAGEMENT](#REFERENCE_COUNT_MANAGEMENT)

The *objv* argument to **Tcl\_WrongNumArgs** should be the exact arguments passed to the command or method implementation function that is calling **Tcl\_WrongNumArgs**. As such, all values referenced in it should have reference counts greater than zero; this is usually a non-issue.

# [SEE ALSO](#SEE_ALSO)

[Tcl\_GetIndexFromObj(3)](/man/os/tcl/Tcl_GetIndexFromObj.3)

# [KEYWORDS](#KEYWORDS)

command, error message, wrong number of arguments

8.0 Tcl

---

Document: Tcl_WrongNumArgs(3) from tcl 9.1.0-r2 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/tcl/Tcl/9.1.0/tcl9.1.0-src.tar.gz
