kwsysPlatformTestsC.c 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /*============================================================================
  2. KWSys - Kitware System Library
  3. Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
  4. Distributed under the OSI-approved BSD License (the "License");
  5. see accompanying file Copyright.txt for details.
  6. This software is distributed WITHOUT ANY WARRANTY; without even the
  7. implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  8. See the License for more information.
  9. ============================================================================*/
  10. /*
  11. Macros to define main() in a cross-platform way.
  12. Usage:
  13. int KWSYS_PLATFORM_TEST_C_MAIN()
  14. {
  15. return 0;
  16. }
  17. int KWSYS_PLATFORM_TEST_C_MAIN_ARGS(argc, argv)
  18. {
  19. (void)argc; (void)argv;
  20. return 0;
  21. }
  22. */
  23. #if defined(__CLASSIC_C__)
  24. # define KWSYS_PLATFORM_TEST_C_MAIN() \
  25. main()
  26. # define KWSYS_PLATFORM_TEST_C_MAIN_ARGS(argc, argv) \
  27. main(argc,argv) int argc; char* argv[];
  28. #else
  29. # define KWSYS_PLATFORM_TEST_C_MAIN() \
  30. main(void)
  31. # define KWSYS_PLATFORM_TEST_C_MAIN_ARGS(argc, argv) \
  32. main(int argc, char* argv[])
  33. #endif
  34. /*--------------------------------------------------------------------------*/
  35. #ifdef TEST_KWSYS_C_HAS_PTRDIFF_T
  36. #include <stddef.h>
  37. int f(ptrdiff_t n) { return n > 0; }
  38. int KWSYS_PLATFORM_TEST_C_MAIN()
  39. {
  40. char* p = 0;
  41. ptrdiff_t d = p - p;
  42. (void)d;
  43. return f(p - p);
  44. }
  45. #endif
  46. /*--------------------------------------------------------------------------*/
  47. #ifdef TEST_KWSYS_C_HAS_SSIZE_T
  48. #include <unistd.h>
  49. int f(ssize_t n) { return (int)n; }
  50. int KWSYS_PLATFORM_TEST_C_MAIN()
  51. {
  52. ssize_t n = 0;
  53. return f(n);
  54. }
  55. #endif
  56. /*--------------------------------------------------------------------------*/
  57. #ifdef TEST_KWSYS_C_TYPE_MACROS
  58. char* info_macros =
  59. #if defined(__SIZEOF_SHORT__)
  60. "INFO:macro[__SIZEOF_SHORT__]\n"
  61. #endif
  62. #if defined(__SIZEOF_INT__)
  63. "INFO:macro[__SIZEOF_INT__]\n"
  64. #endif
  65. #if defined(__SIZEOF_LONG__)
  66. "INFO:macro[__SIZEOF_LONG__]\n"
  67. #endif
  68. #if defined(__SIZEOF_LONG_LONG__)
  69. "INFO:macro[__SIZEOF_LONG_LONG__]\n"
  70. #endif
  71. #if defined(__SHORT_MAX__)
  72. "INFO:macro[__SHORT_MAX__]\n"
  73. #endif
  74. #if defined(__INT_MAX__)
  75. "INFO:macro[__INT_MAX__]\n"
  76. #endif
  77. #if defined(__LONG_MAX__)
  78. "INFO:macro[__LONG_MAX__]\n"
  79. #endif
  80. #if defined(__LONG_LONG_MAX__)
  81. "INFO:macro[__LONG_LONG_MAX__]\n"
  82. #endif
  83. "";
  84. int KWSYS_PLATFORM_TEST_C_MAIN_ARGS(argc, argv)
  85. {
  86. int require = 0;
  87. require += info_macros[argc];
  88. (void)argv;
  89. return require;
  90. }
  91. #endif