in your example f is a definition but q is a tentative definition. it's only a definition if there isn't another definition for q somewhere else. if there is another definition then q is a declaration.
the comments might not be right. i'm not sure if the order of tenativeness is defined so it could be the other way around.Code:int q; // definition int q; // declaration/tentative definition