1 /* Test redefinitions differing only in the spelling of paste and 2 stringify tokens, whitespace around them, or the number of 3 consecutive paste tokens. */ 4 /* { dg-do preprocess } */ 5 /* { dg-options "" } */ 6 7 #define str(x) #x /* { dg-message "previous definition" } */ 8 #define str(x) %: x /* { dg-warning "redefined" } */ 9 #undef str 10 #define str(x) #x /* { dg-message "previous definition" } */ 11 #define str(x) # x /* { dg-warning "redefined" } */ 12 #undef str 13 #define str(x) #x /* { dg-message "previous definition" } */ 14 #define str(x) %: x /* { dg-warning "redefined" } */ 15 #undef str 16 #define str(x) %:x /* { dg-message "previous definition" } */ 17 #define str(x) #x /* { dg-warning "redefined" } */ 18 #undef str 19 #define str(x) %:x /* { dg-message "previous definition" } */ 20 #define str(x) %: x /* { dg-warning "redefined" } */ 21 #undef str 22 #define str(x) %:x /* { dg-message "previous definition" } */ 23 #define str(x) # x /* { dg-warning "redefined" } */ 24 #undef str 25 #define str(x) %:x /* { dg-message "previous definition" } */ 26 #define str(x) %: x /* { dg-warning "redefined" } */ 27 #undef str 28 #define str(x) # x /* { dg-message "previous definition" } */ 29 #define str(x) #x /* { dg-warning "redefined" } */ 30 #undef str 31 #define str(x) # x /* { dg-message "previous definition" } */ 32 #define str(x) %: x /* { dg-warning "redefined" } */ 33 #undef str 34 #define str(x) # x /* { dg-message "previous definition" } */ 35 #define str(x) %: x /* { dg-warning "redefined" } */ 36 #undef str 37 #define str(x) %: x /* { dg-message "previous definition" } */ 38 #define str(x) #x /* { dg-warning "redefined" } */ 39 #undef str 40 #define str(x) %: x /* { dg-message "previous definition" } */ 41 #define str(x) # x /* { dg-warning "redefined" } */ 42 #undef str 43 44 #define str(x) #x 45 #define str(x) #x 46 #undef str 47 #define str(x) # x 48 #define str(x) # x 49 #undef str 50 #define str(x) %: x 51 #define str(x) %: x 52 #undef str 53 #define str(x) %: x 54 #define str(x) %: x 55 #undef str 56 57 #define astr(x) a#x /* { dg-message "previous definition" } */ 58 #define astr(x) a%: x /* { dg-warning "redefined" } */ 59 #undef astr 60 #define astr(x) a#x /* { dg-message "previous definition" } */ 61 #define astr(x) a# x /* { dg-warning "redefined" } */ 62 #undef astr 63 #define astr(x) a#x /* { dg-message "previous definition" } */ 64 #define astr(x) a%: x /* { dg-warning "redefined" } */ 65 #undef astr 66 #define astr(x) a#x /* { dg-message "previous definition" } */ 67 #define astr(x) a #x /* { dg-warning "redefined" } */ 68 #undef astr 69 #define astr(x) a#x /* { dg-message "previous definition" } */ 70 #define astr(x) a %:x /* { dg-warning "redefined" } */ 71 #undef astr 72 #define astr(x) a#x /* { dg-message "previous definition" } */ 73 #define astr(x) a # x /* { dg-warning "redefined" } */ 74 #undef astr 75 #define astr(x) a#x /* { dg-message "previous definition" } */ 76 #define astr(x) a %: x /* { dg-warning "redefined" } */ 77 #undef astr 78 #define astr(x) a%:x /* { dg-message "previous definition" } */ 79 #define astr(x) a#x /* { dg-warning "redefined" } */ 80 #undef astr 81 #define astr(x) a%:x /* { dg-message "previous definition" } */ 82 #define astr(x) a%: x /* { dg-warning "redefined" } */ 83 #undef astr 84 #define astr(x) a%:x /* { dg-message "previous definition" } */ 85 #define astr(x) a# x /* { dg-warning "redefined" } */ 86 #undef astr 87 #define astr(x) a%:x /* { dg-message "previous definition" } */ 88 #define astr(x) a%: x /* { dg-warning "redefined" } */ 89 #undef astr 90 #define astr(x) a%:x /* { dg-message "previous definition" } */ 91 #define astr(x) a #x /* { dg-warning "redefined" } */ 92 #undef astr 93 #define astr(x) a%:x /* { dg-message "previous definition" } */ 94 #define astr(x) a %:x /* { dg-warning "redefined" } */ 95 #undef astr 96 #define astr(x) a%:x /* { dg-message "previous definition" } */ 97 #define astr(x) a # x /* { dg-warning "redefined" } */ 98 #undef astr 99 #define astr(x) a%:x /* { dg-message "previous definition" } */ 100 #define astr(x) a %: x /* { dg-warning "redefined" } */ 101 #undef astr 102 #define astr(x) a# x /* { dg-message "previous definition" } */ 103 #define astr(x) a#x /* { dg-warning "redefined" } */ 104 #undef astr 105 #define astr(x) a# x /* { dg-message "previous definition" } */ 106 #define astr(x) a%: x /* { dg-warning "redefined" } */ 107 #undef astr 108 #define astr(x) a# x /* { dg-message "previous definition" } */ 109 #define astr(x) a%: x /* { dg-warning "redefined" } */ 110 #undef astr 111 #define astr(x) a# x /* { dg-message "previous definition" } */ 112 #define astr(x) a #x /* { dg-warning "redefined" } */ 113 #undef astr 114 #define astr(x) a# x /* { dg-message "previous definition" } */ 115 #define astr(x) a %:x /* { dg-warning "redefined" } */ 116 #undef astr 117 #define astr(x) a# x /* { dg-message "previous definition" } */ 118 #define astr(x) a # x /* { dg-warning "redefined" } */ 119 #undef astr 120 #define astr(x) a# x /* { dg-message "previous definition" } */ 121 #define astr(x) a %: x /* { dg-warning "redefined" } */ 122 #undef astr 123 #define astr(x) a%: x /* { dg-message "previous definition" } */ 124 #define astr(x) a#x /* { dg-warning "redefined" } */ 125 #undef astr 126 #define astr(x) a%: x /* { dg-message "previous definition" } */ 127 #define astr(x) a# x /* { dg-warning "redefined" } */ 128 #undef astr 129 #define astr(x) a%: x /* { dg-message "previous definition" } */ 130 #define astr(x) a #x /* { dg-warning "redefined" } */ 131 #undef astr 132 #define astr(x) a%: x /* { dg-message "previous definition" } */ 133 #define astr(x) a %:x /* { dg-warning "redefined" } */ 134 #undef astr 135 #define astr(x) a%: x /* { dg-message "previous definition" } */ 136 #define astr(x) a # x /* { dg-warning "redefined" } */ 137 #undef astr 138 #define astr(x) a%: x /* { dg-message "previous definition" } */ 139 #define astr(x) a %: x /* { dg-warning "redefined" } */ 140 #undef astr 141 #define astr(x) a #x /* { dg-message "previous definition" } */ 142 #define astr(x) a#x /* { dg-warning "redefined" } */ 143 #undef astr 144 #define astr(x) a #x /* { dg-message "previous definition" } */ 145 #define astr(x) a%: x /* { dg-warning "redefined" } */ 146 #undef astr 147 #define astr(x) a #x /* { dg-message "previous definition" } */ 148 #define astr(x) a# x /* { dg-warning "redefined" } */ 149 #undef astr 150 #define astr(x) a #x /* { dg-message "previous definition" } */ 151 #define astr(x) a%: x /* { dg-warning "redefined" } */ 152 #undef astr 153 #define astr(x) a #x /* { dg-message "previous definition" } */ 154 #define astr(x) a %:x /* { dg-warning "redefined" } */ 155 #undef astr 156 #define astr(x) a #x /* { dg-message "previous definition" } */ 157 #define astr(x) a # x /* { dg-warning "redefined" } */ 158 #undef astr 159 #define astr(x) a #x /* { dg-message "previous definition" } */ 160 #define astr(x) a %: x /* { dg-warning "redefined" } */ 161 #undef astr 162 #define astr(x) a %:x /* { dg-message "previous definition" } */ 163 #define astr(x) a#x /* { dg-warning "redefined" } */ 164 #undef astr 165 #define astr(x) a %:x /* { dg-message "previous definition" } */ 166 #define astr(x) a%: x /* { dg-warning "redefined" } */ 167 #undef astr 168 #define astr(x) a %:x /* { dg-message "previous definition" } */ 169 #define astr(x) a# x /* { dg-warning "redefined" } */ 170 #undef astr 171 #define astr(x) a %:x /* { dg-message "previous definition" } */ 172 #define astr(x) a%: x /* { dg-warning "redefined" } */ 173 #undef astr 174 #define astr(x) a %:x /* { dg-message "previous definition" } */ 175 #define astr(x) a #x /* { dg-warning "redefined" } */ 176 #undef astr 177 #define astr(x) a %:x /* { dg-message "previous definition" } */ 178 #define astr(x) a # x /* { dg-warning "redefined" } */ 179 #undef astr 180 #define astr(x) a %:x /* { dg-message "previous definition" } */ 181 #define astr(x) a %: x /* { dg-warning "redefined" } */ 182 #undef astr 183 #define astr(x) a # x /* { dg-message "previous definition" } */ 184 #define astr(x) a#x /* { dg-warning "redefined" } */ 185 #undef astr 186 #define astr(x) a # x /* { dg-message "previous definition" } */ 187 #define astr(x) a%: x /* { dg-warning "redefined" } */ 188 #undef astr 189 #define astr(x) a # x /* { dg-message "previous definition" } */ 190 #define astr(x) a# x /* { dg-warning "redefined" } */ 191 #undef astr 192 #define astr(x) a # x /* { dg-message "previous definition" } */ 193 #define astr(x) a%: x /* { dg-warning "redefined" } */ 194 #undef astr 195 #define astr(x) a # x /* { dg-message "previous definition" } */ 196 #define astr(x) a #x /* { dg-warning "redefined" } */ 197 #undef astr 198 #define astr(x) a # x /* { dg-message "previous definition" } */ 199 #define astr(x) a %:x /* { dg-warning "redefined" } */ 200 #undef astr 201 #define astr(x) a # x /* { dg-message "previous definition" } */ 202 #define astr(x) a %: x /* { dg-warning "redefined" } */ 203 #undef astr 204 #define astr(x) a %: x /* { dg-message "previous definition" } */ 205 #define astr(x) a#x /* { dg-warning "redefined" } */ 206 #undef astr 207 #define astr(x) a %: x /* { dg-message "previous definition" } */ 208 #define astr(x) a%: x /* { dg-warning "redefined" } */ 209 #undef astr 210 #define astr(x) a %: x /* { dg-message "previous definition" } */ 211 #define astr(x) a# x /* { dg-warning "redefined" } */ 212 #undef astr 213 #define astr(x) a %: x /* { dg-message "previous definition" } */ 214 #define astr(x) a%: x /* { dg-warning "redefined" } */ 215 #undef astr 216 #define astr(x) a %: x /* { dg-message "previous definition" } */ 217 #define astr(x) a #x /* { dg-warning "redefined" } */ 218 #undef astr 219 #define astr(x) a %: x /* { dg-message "previous definition" } */ 220 #define astr(x) a %:x /* { dg-warning "redefined" } */ 221 #undef astr 222 #define astr(x) a %: x /* { dg-message "previous definition" } */ 223 #define astr(x) a # x /* { dg-warning "redefined" } */ 224 #undef astr 225 226 #define astr(x) a#x 227 #define astr(x) a#x 228 #undef astr 229 #define astr(x) a# x 230 #define astr(x) a# x 231 #undef astr 232 #define astr(x) a%: x 233 #define astr(x) a%: x 234 #undef astr 235 #define astr(x) a%: x 236 #define astr(x) a%: x 237 #undef astr 238 #define astr(x) a #x 239 #define astr(x) a #x 240 #undef astr 241 #define astr(x) a %:x 242 #define astr(x) a %:x 243 #undef astr 244 #define astr(x) a # x 245 #define astr(x) a # x 246 #undef astr 247 #define astr(x) a %: x 248 #define astr(x) a %: x 249 #undef astr 250 251 #define cat(x,y) x##y /* { dg-message "previous definition" } */ 252 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 253 #undef cat 254 #define cat(x,y) x##y /* { dg-message "previous definition" } */ 255 #define cat(x,y) x## y /* { dg-warning "redefined" } */ 256 #undef cat 257 #define cat(x,y) x##y /* { dg-message "previous definition" } */ 258 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 259 #undef cat 260 #define cat(x,y) x##y /* { dg-message "previous definition" } */ 261 #define cat(x,y) x ##y /* { dg-warning "redefined" } */ 262 #undef cat 263 #define cat(x,y) x##y /* { dg-message "previous definition" } */ 264 #define cat(x,y) x %:%:y /* { dg-warning "redefined" } */ 265 #undef cat 266 #define cat(x,y) x##y /* { dg-message "previous definition" } */ 267 #define cat(x,y) x ## y /* { dg-warning "redefined" } */ 268 #undef cat 269 #define cat(x,y) x##y /* { dg-message "previous definition" } */ 270 #define cat(x,y) x %:%: y /* { dg-warning "redefined" } */ 271 #undef cat 272 #define cat(x,y) x%:%:y /* { dg-message "previous definition" } */ 273 #define cat(x,y) x##y /* { dg-warning "redefined" } */ 274 #undef cat 275 #define cat(x,y) x%:%:y /* { dg-message "previous definition" } */ 276 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 277 #undef cat 278 #define cat(x,y) x%:%:y /* { dg-message "previous definition" } */ 279 #define cat(x,y) x## y /* { dg-warning "redefined" } */ 280 #undef cat 281 #define cat(x,y) x%:%:y /* { dg-message "previous definition" } */ 282 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 283 #undef cat 284 #define cat(x,y) x%:%:y /* { dg-message "previous definition" } */ 285 #define cat(x,y) x ##y /* { dg-warning "redefined" } */ 286 #undef cat 287 #define cat(x,y) x%:%:y /* { dg-message "previous definition" } */ 288 #define cat(x,y) x %:%:y /* { dg-warning "redefined" } */ 289 #undef cat 290 #define cat(x,y) x%:%:y /* { dg-message "previous definition" } */ 291 #define cat(x,y) x ## y /* { dg-warning "redefined" } */ 292 #undef cat 293 #define cat(x,y) x%:%:y /* { dg-message "previous definition" } */ 294 #define cat(x,y) x %:%: y /* { dg-warning "redefined" } */ 295 #undef cat 296 #define cat(x,y) x## y /* { dg-message "previous definition" } */ 297 #define cat(x,y) x##y /* { dg-warning "redefined" } */ 298 #undef cat 299 #define cat(x,y) x## y /* { dg-message "previous definition" } */ 300 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 301 #undef cat 302 #define cat(x,y) x## y /* { dg-message "previous definition" } */ 303 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 304 #undef cat 305 #define cat(x,y) x## y /* { dg-message "previous definition" } */ 306 #define cat(x,y) x ##y /* { dg-warning "redefined" } */ 307 #undef cat 308 #define cat(x,y) x## y /* { dg-message "previous definition" } */ 309 #define cat(x,y) x %:%:y /* { dg-warning "redefined" } */ 310 #undef cat 311 #define cat(x,y) x## y /* { dg-message "previous definition" } */ 312 #define cat(x,y) x ## y /* { dg-warning "redefined" } */ 313 #undef cat 314 #define cat(x,y) x## y /* { dg-message "previous definition" } */ 315 #define cat(x,y) x %:%: y /* { dg-warning "redefined" } */ 316 #undef cat 317 #define cat(x,y) x%:%: y /* { dg-message "previous definition" } */ 318 #define cat(x,y) x##y /* { dg-warning "redefined" } */ 319 #undef cat 320 #define cat(x,y) x%:%: y /* { dg-message "previous definition" } */ 321 #define cat(x,y) x## y /* { dg-warning "redefined" } */ 322 #undef cat 323 #define cat(x,y) x%:%: y /* { dg-message "previous definition" } */ 324 #define cat(x,y) x ##y /* { dg-warning "redefined" } */ 325 #undef cat 326 #define cat(x,y) x%:%: y /* { dg-message "previous definition" } */ 327 #define cat(x,y) x %:%:y /* { dg-warning "redefined" } */ 328 #undef cat 329 #define cat(x,y) x%:%: y /* { dg-message "previous definition" } */ 330 #define cat(x,y) x ## y /* { dg-warning "redefined" } */ 331 #undef cat 332 #define cat(x,y) x%:%: y /* { dg-message "previous definition" } */ 333 #define cat(x,y) x %:%: y /* { dg-warning "redefined" } */ 334 #undef cat 335 #define cat(x,y) x ##y /* { dg-message "previous definition" } */ 336 #define cat(x,y) x##y /* { dg-warning "redefined" } */ 337 #undef cat 338 #define cat(x,y) x ##y /* { dg-message "previous definition" } */ 339 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 340 #undef cat 341 #define cat(x,y) x ##y /* { dg-message "previous definition" } */ 342 #define cat(x,y) x## y /* { dg-warning "redefined" } */ 343 #undef cat 344 #define cat(x,y) x ##y /* { dg-message "previous definition" } */ 345 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 346 #undef cat 347 #define cat(x,y) x ##y /* { dg-message "previous definition" } */ 348 #define cat(x,y) x %:%:y /* { dg-warning "redefined" } */ 349 #undef cat 350 #define cat(x,y) x ##y /* { dg-message "previous definition" } */ 351 #define cat(x,y) x ## y /* { dg-warning "redefined" } */ 352 #undef cat 353 #define cat(x,y) x ##y /* { dg-message "previous definition" } */ 354 #define cat(x,y) x %:%: y /* { dg-warning "redefined" } */ 355 #undef cat 356 #define cat(x,y) x %:%:y /* { dg-message "previous definition" } */ 357 #define cat(x,y) x##y /* { dg-warning "redefined" } */ 358 #undef cat 359 #define cat(x,y) x %:%:y /* { dg-message "previous definition" } */ 360 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 361 #undef cat 362 #define cat(x,y) x %:%:y /* { dg-message "previous definition" } */ 363 #define cat(x,y) x## y /* { dg-warning "redefined" } */ 364 #undef cat 365 #define cat(x,y) x %:%:y /* { dg-message "previous definition" } */ 366 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 367 #undef cat 368 #define cat(x,y) x %:%:y /* { dg-message "previous definition" } */ 369 #define cat(x,y) x ##y /* { dg-warning "redefined" } */ 370 #undef cat 371 #define cat(x,y) x %:%:y /* { dg-message "previous definition" } */ 372 #define cat(x,y) x ## y /* { dg-warning "redefined" } */ 373 #undef cat 374 #define cat(x,y) x %:%:y /* { dg-message "previous definition" } */ 375 #define cat(x,y) x %:%: y /* { dg-warning "redefined" } */ 376 #undef cat 377 #define cat(x,y) x ## y /* { dg-message "previous definition" } */ 378 #define cat(x,y) x##y /* { dg-warning "redefined" } */ 379 #undef cat 380 #define cat(x,y) x ## y /* { dg-message "previous definition" } */ 381 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 382 #undef cat 383 #define cat(x,y) x ## y /* { dg-message "previous definition" } */ 384 #define cat(x,y) x## y /* { dg-warning "redefined" } */ 385 #undef cat 386 #define cat(x,y) x ## y /* { dg-message "previous definition" } */ 387 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 388 #undef cat 389 #define cat(x,y) x ## y /* { dg-message "previous definition" } */ 390 #define cat(x,y) x ##y /* { dg-warning "redefined" } */ 391 #undef cat 392 #define cat(x,y) x ## y /* { dg-message "previous definition" } */ 393 #define cat(x,y) x %:%:y /* { dg-warning "redefined" } */ 394 #undef cat 395 #define cat(x,y) x ## y /* { dg-message "previous definition" } */ 396 #define cat(x,y) x %:%: y /* { dg-warning "redefined" } */ 397 #undef cat 398 #define cat(x,y) x %:%: y /* { dg-message "previous definition" } */ 399 #define cat(x,y) x##y /* { dg-warning "redefined" } */ 400 #undef cat 401 #define cat(x,y) x %:%: y /* { dg-message "previous definition" } */ 402 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 403 #undef cat 404 #define cat(x,y) x %:%: y /* { dg-message "previous definition" } */ 405 #define cat(x,y) x## y /* { dg-warning "redefined" } */ 406 #undef cat 407 #define cat(x,y) x %:%: y /* { dg-message "previous definition" } */ 408 #define cat(x,y) x%:%: y /* { dg-warning "redefined" } */ 409 #undef cat 410 #define cat(x,y) x %:%: y /* { dg-message "previous definition" } */ 411 #define cat(x,y) x ##y /* { dg-warning "redefined" } */ 412 #undef cat 413 #define cat(x,y) x %:%: y /* { dg-message "previous definition" } */ 414 #define cat(x,y) x %:%:y /* { dg-warning "redefined" } */ 415 #undef cat 416 #define cat(x,y) x %:%: y /* { dg-message "previous definition" } */ 417 #define cat(x,y) x ## y /* { dg-warning "redefined" } */ 418 #undef cat 419 420 #define cat(x,y) x##y 421 #define cat(x,y) x##y 422 #undef cat 423 #define cat(x,y) x## y 424 #define cat(x,y) x## y 425 #undef cat 426 #define cat(x,y) x%:%: y 427 #define cat(x,y) x%:%: y 428 #undef cat 429 #define cat(x,y) x%:%: y 430 #define cat(x,y) x%:%: y 431 #undef cat 432 #define cat(x,y) x ##y 433 #define cat(x,y) x ##y 434 #undef cat 435 #define cat(x,y) x %:%:y 436 #define cat(x,y) x %:%:y 437 #undef cat 438 #define cat(x,y) x ## y 439 #define cat(x,y) x ## y 440 #undef cat 441 #define cat(x,y) x %:%: y 442 #define cat(x,y) x %:%: y 443 #undef cat 444 445 #define cat3(x,y,z) x##y##z /* { dg-message "previous definition" } */ 446 #define cat3(x,y,z) x##y####z /* { dg-warning "redefined" } */ 447 #undef cat3 448 449 #define cat3(x,y,z) x##y####z /* { dg-message "previous definition" } */ 450 #define cat3(x,y,z) x####y##z /* { dg-warning "redefined" } */ 451 #undef cat3 452 453 #define cat3(x,y,z) x##y####z /* { dg-message "previous definition" } */ 454 #define cat3(x,y,z) x##y## ##z /* { dg-warning "redefined" } */ 455 #undef cat3 456 457 #define cat3(x,y,z) x##y####z /* { dg-message "previous definition" } */ 458 #define cat3(x,y,z) x##y##%:%:z /* { dg-warning "redefined" } */ 459 #undef cat3 460 461 #define cat3(x,y,z) x##y######## ####z /* { dg-message "previous definition" } */ 462 #define cat3(x,y,z) x##y############z /* { dg-warning "redefined" } */ 463 #undef cat3 464 465 #define cat3(x,y,z) x##y############z /* { dg-message "previous definition" } */ 466 #define cat3(x,y,z) x##y########%:%:##z /* { dg-warning "redefined" } */ 467 #undef cat3 468 469 #define cat3(x,y,z) x##y##z 470 #define cat3(x,y,z) x##y##z 471 #undef cat3 472 473 #define cat3(x,y,z) x##y####z 474 #define cat3(x,y,z) x##y####z 475 #undef cat3 476 477 #define cat3(x,y,z) x####y##z 478 #define cat3(x,y,z) x####y##z 479 #undef cat3 480 481 #define cat3(x,y,z) x##y## ##z 482 #define cat3(x,y,z) x##y## ##z 483 #undef cat3 484 485 #define cat3(x,y,z) x##y##%:%:z 486 #define cat3(x,y,z) x##y##%:%:z 487 #undef cat3 488 489 #define cat3(x,y,z) x##y######## ####z 490 #define cat3(x,y,z) x##y######## ####z 491 #undef cat3 492 493 #define cat3(x,y,z) x##y############z 494 #define cat3(x,y,z) x##y############z 495 #undef cat3 496 497 #define cat3(x,y,z) x##y########%:%:##z 498 #define cat3(x,y,z) x##y########%:%:##z 499 #undef cat3 500