Given ε, and a point x in S, there is some δ satisfying continuity at x, at the level of ½ε. Build a ball of radius ½δ about x. Do this for every x, and we have an open cover for S. Select a finite subcover and set γ to the smallest radius. This is the value that will satisfy uniformity.
Let y and z be points in S, with |y,z| < γ. Refer to the open cover; y is contained in a ball of radius ½δ, centered at a point we will call x. (The value of δ may depend on x, but it is at least as large as γ.) By the triangular inequality, |x,z| < δ. That means |f(x),f(z)| < ½ε. The same is true of |f(x),f(y)|, hence f(y) and f(z) are within ε of each other. The value of γ satisfies continuity for every x, and f is uniform.
Since compact = closed and bounded in Rn, this is a generalization of an earlier theorem.
By the above, h is bounded. Every two functions differ by an upper bound b, and b = 0 iff the functions are equal.
Suppose this is not the case. Build a sequence of balls, with decreasing diameters, such that none of these balls is contained in an open set in C. The centers imply a cluster point p. Restrict attention to a subsequence of balls whose centers approach p.
Since p is contained in an open set U in C, place p at the center of an open ball of radius d, contained in U. If you go down far enough, the centers of our balls are within d/2 of p. Go down further, if necessary, so that the radius of each ball is less than d/2. This places the entire ball inside the set U, which is a contradiction. Therefore a distance d exists, such that every ball of radius d or less lies in some open set U in our finite cover C.