If you create a macro without arguments you should always invoke it with an empty statement after it:
\arnold{}
The reason behind this is that LaTeX expects an argument directly after the macro (it's still in scanning mode for that macro). You need to break that using either a protected space (as you already wrote) or an empty statement {}
. I'd recommend using an empty statement, as using a protected space can generate nasty effects -- for example, if that protected space is directly followed by a line break. In that case LaTeX might print two spaces instead which looks ugly and isn't wanted. Using an empty statement prevents this.
How you can add the space directly to the macro has already been answered, but do you really want this? You'd get into trouble as soon as the macro is to be followed by a punctuation mark (or if the macro is followed by a \footnote
, etc.):
\arnold,
Arnold Schwarzenegger ,
I'd recommend going for the empty statement option -- one gets used to that quite fast.