Переглянути джерело

Merge pull request #6040 from thinkyhead/rc_sanity_use_assert

Simplify some sanity checks with static_assert
Scott Lahteine 8 роки тому
джерело
коміт
734f9ea133
1 змінених файлів з 134 додано та 213 видалено
  1. 134
    213
      Marlin/SanityCheck.h

+ 134
- 213
Marlin/SanityCheck.h Переглянути файл

@@ -372,32 +372,21 @@
372 372
 /**
373 373
  * Allow only one bed leveling option to be defined
374 374
  */
375
-#if HAS_ABL
376
-  #define COUNT_LEV_1 0
375
+static_assert(1 >= 0
377 376
   #if ENABLED(AUTO_BED_LEVELING_LINEAR)
378
-    #define COUNT_LEV_2 INCREMENT(COUNT_LEV_1)
379
-  #else
380
-    #define COUNT_LEV_2 COUNT_LEV_1
377
+    + 1
381 378
   #endif
382 379
   #if ENABLED(AUTO_BED_LEVELING_3POINT)
383
-    #define COUNT_LEV_3 INCREMENT(COUNT_LEV_2)
384
-  #else
385
-    #define COUNT_LEV_3 COUNT_LEV_2
380
+    + 1
386 381
   #endif
387 382
   #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
388
-    #define COUNT_LEV_4 INCREMENT(COUNT_LEV_3)
389
-  #else
390
-    #define COUNT_LEV_4 COUNT_LEV_3
383
+    + 1
391 384
   #endif
392 385
   #if ENABLED(MESH_BED_LEVELING)
393
-    #define COUNT_LEV_5 INCREMENT(COUNT_LEV_4)
394
-  #else
395
-    #define COUNT_LEV_5 COUNT_LEV_4
396
-  #endif
397
-  #if COUNT_LEV_5 > 1
398
-    #error "Select only one of: MESH_BED_LEVELING, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT, or AUTO_BED_LEVELING_BILINEAR."
386
+    + 1
399 387
   #endif
400
-#endif
388
+  , "Select only one of: MESH_BED_LEVELING, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT, or AUTO_BED_LEVELING_BILINEAR."
389
+);
401 390
 
402 391
 /**
403 392
  * Mesh Bed Leveling
@@ -408,47 +397,38 @@
408 397
   #elif MESH_NUM_X_POINTS > 9 || MESH_NUM_Y_POINTS > 9
409 398
     #error "MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS must be less than 10."
410 399
   #endif
411
-#elif ENABLED(MANUAL_BED_LEVELING)
412
-  #error "MANUAL_BED_LEVELING only applies to MESH_BED_LEVELING."
413 400
 #endif
414 401
 
415 402
 /**
416 403
  * Probes
417 404
  */
418
-#if PROBE_SELECTED
419 405
 
420
-  /**
421
-   * Allow only one probe option to be defined
422
-   */
423
-  #define COUNT_PROBE_1 0
406
+/**
407
+ * Allow only one probe option to be defined
408
+ */
409
+static_assert(1 >= 0
410
+  #if ENABLED(PROBE_MANUALLY)
411
+    + 1
412
+  #endif
424 413
   #if ENABLED(FIX_MOUNTED_PROBE)
425
-    #define COUNT_PROBE_2 INCREMENT(COUNT_PROBE_1)
426
-  #else
427
-    #define COUNT_PROBE_2 COUNT_PROBE_1
414
+    + 1
428 415
   #endif
429 416
   #if HAS_Z_SERVO_ENDSTOP && DISABLED(BLTOUCH)
430
-    #define COUNT_PROBE_3 INCREMENT(COUNT_PROBE_2)
431
-  #else
432
-    #define COUNT_PROBE_3 COUNT_PROBE_2
417
+    + 1
433 418
   #endif
434 419
   #if ENABLED(BLTOUCH)
435
-    #define COUNT_PROBE_4 INCREMENT(COUNT_PROBE_3)
436
-  #else
437
-    #define COUNT_PROBE_4 COUNT_PROBE_3
420
+    + 1
438 421
   #endif
439 422
   #if ENABLED(Z_PROBE_ALLEN_KEY)
440
-    #define COUNT_PROBE_5 INCREMENT(COUNT_PROBE_4)
441
-  #else
442
-    #define COUNT_PROBE_5 COUNT_PROBE_4
423
+    + 1
443 424
   #endif
444 425
   #if ENABLED(Z_PROBE_SLED)
445
-    #define COUNT_PROBE_6 INCREMENT(COUNT_PROBE_5)
446
-  #else
447
-    #define COUNT_PROBE_6 COUNT_PROBE_5
448
-  #endif
449
-  #if COUNT_PROBE_6 > 1
450
-    #error "Please enable only one probe: FIX_MOUNTED_PROBE, Z Servo, BLTOUCH, Z_PROBE_ALLEN_KEY, or Z_PROBE_SLED."
426
+    + 1
451 427
   #endif
428
+  , "Please enable only one probe: PROBE_MANUALLY, FIX_MOUNTED_PROBE, Z Servo, BLTOUCH, Z_PROBE_ALLEN_KEY, or Z_PROBE_SLED."
429
+);
430
+
431
+#if PROBE_SELECTED
452 432
 
453 433
   /**
454 434
    * Z_PROBE_SLED is incompatible with DELTA
@@ -516,6 +496,13 @@
516 496
 #endif
517 497
 
518 498
 /**
499
+ * MANUAL_BED_LEVELING requirements
500
+ */
501
+#if ENABLED(MANUAL_BED_LEVELING) && DISABLED(MESH_BED_LEVELING)
502
+  #error "MANUAL_BED_LEVELING requires MESH_BED_LEVELING."
503
+#endif
504
+
505
+/**
519 506
  * Homing Bump
520 507
  */
521 508
 #if X_HOME_BUMP_MM < 0 || Y_HOME_BUMP_MM < 0 || Z_HOME_BUMP_MM < 0
@@ -639,55 +626,36 @@
639 626
 /**
640 627
  * Don't set more than one kinematic type
641 628
  */
642
-#define COUNT_KIN_1 0
643
-#if ENABLED(DELTA)
644
-  #define COUNT_KIN_2 INCREMENT(COUNT_KIN_1)
645
-#else
646
-  #define COUNT_KIN_2 COUNT_KIN_1
647
-#endif
648
-#if ENABLED(MORGAN_SCARA)
649
-  #define COUNT_KIN_3 INCREMENT(COUNT_KIN_2)
650
-#else
651
-  #define COUNT_KIN_3 COUNT_KIN_2
652
-#endif
653
-#if ENABLED(MAKERARM_SCARA)
654
-  #define COUNT_KIN_4 INCREMENT(COUNT_KIN_3)
655
-#else
656
-  #define COUNT_KIN_4 COUNT_KIN_3
657
-#endif
658
-#if ENABLED(COREXY)
659
-  #define COUNT_KIN_5 INCREMENT(COUNT_KIN_4)
660
-#else
661
-  #define COUNT_KIN_5 COUNT_KIN_4
662
-#endif
663
-#if ENABLED(COREXZ)
664
-  #define COUNT_KIN_6 INCREMENT(COUNT_KIN_5)
665
-#else
666
-  #define COUNT_KIN_6 COUNT_KIN_5
667
-#endif
668
-#if ENABLED(COREYZ)
669
-  #define COUNT_KIN_7 INCREMENT(COUNT_KIN_6)
670
-#else
671
-  #define COUNT_KIN_7 COUNT_KIN_6
672
-#endif
673
-#if ENABLED(COREYX)
674
-  #define COUNT_KIN_8 INCREMENT(COUNT_KIN_7)
675
-#else
676
-  #define COUNT_KIN_8 COUNT_KIN_7
677
-#endif
678
-#if ENABLED(COREZX)
679
-  #define COUNT_KIN_9 INCREMENT(COUNT_KIN_8)
680
-#else
681
-  #define COUNT_KIN_9 COUNT_KIN_8
682
-#endif
683
-#if ENABLED(COREZY)
684
-  #define COUNT_KIN_10 INCREMENT(COUNT_KIN_9)
685
-#else
686
-  #define COUNT_KIN_10 COUNT_KIN_9
687
-#endif
688
-#if COUNT_KIN_10 > 1
689
-  #error "Please enable only one of DELTA, MORGAN_SCARA, MAKERARM_SCARA, COREXY, COREYX, COREXZ, COREZX, COREYZ, or COREZY."
690
-#endif
629
+static_assert(1 >= 0
630
+  #if ENABLED(DELTA)
631
+    + 1
632
+  #endif
633
+  #if ENABLED(MORGAN_SCARA)
634
+    + 1
635
+  #endif
636
+  #if ENABLED(MAKERARM_SCARA)
637
+    + 1
638
+  #endif
639
+  #if ENABLED(COREXY)
640
+    + 1
641
+  #endif
642
+  #if ENABLED(COREXZ)
643
+    + 1
644
+  #endif
645
+  #if ENABLED(COREYZ)
646
+    + 1
647
+  #endif
648
+  #if ENABLED(COREYX)
649
+    + 1
650
+  #endif
651
+  #if ENABLED(COREZX)
652
+    + 1
653
+  #endif
654
+  #if ENABLED(COREZY)
655
+    + 1
656
+  #endif
657
+  , "Please enable only one of DELTA, MORGAN_SCARA, MAKERARM_SCARA, COREXY, COREYX, COREXZ, COREZX, COREYZ, or COREZY."
658
+);
691 659
 
692 660
 /**
693 661
  * Allen Key
@@ -950,124 +918,77 @@
950 918
  *       ELB_FULL_GRAPHIC_CONTROLLER => ULTIMAKERCONTROLLER
951 919
  *       PANEL_ONE => ULTIMAKERCONTROLLER
952 920
  */
953
-#define COUNT_LCD_1 0
954
-#if ENABLED(ULTIMAKERCONTROLLER) \
955
-    && DISABLED(SAV_3DGLCD) && DISABLED(miniVIKI) && DISABLED(VIKI2) \
956
-    && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER) && DISABLED(PANEL_ONE)
957
-  #define COUNT_LCD_2 INCREMENT(COUNT_LCD_1)
958
-#else
959
-  #define COUNT_LCD_2 COUNT_LCD_1
960
-#endif
961
-#if ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) && DISABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
962
-  #define COUNT_LCD_3 INCREMENT(COUNT_LCD_2)
963
-#else
964
-  #define COUNT_LCD_3 COUNT_LCD_2
965
-#endif
966
-#if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) && DISABLED(BQ_LCD_SMART_CONTROLLER)
967
-  #define COUNT_LCD_4 INCREMENT(COUNT_LCD_3)
968
-#else
969
-  #define COUNT_LCD_4 COUNT_LCD_3
970
-#endif
971
-#if ENABLED(CARTESIO_UI)
972
-  #define COUNT_LCD_5 INCREMENT(COUNT_LCD_4)
973
-#else
974
-  #define COUNT_LCD_5 COUNT_LCD_4
975
-#endif
976
-#if ENABLED(PANEL_ONE)
977
-  #define COUNT_LCD_6 INCREMENT(COUNT_LCD_5)
978
-#else
979
-  #define COUNT_LCD_6 COUNT_LCD_5
980
-#endif
981
-#if ENABLED(MAKRPANEL)
982
-  #define COUNT_LCD_7 INCREMENT(COUNT_LCD_6)
983
-#else
984
-  #define COUNT_LCD_7 COUNT_LCD_6
985
-#endif
986
-#if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
987
-  #define COUNT_LCD_8 INCREMENT(COUNT_LCD_7)
988
-#else
989
-  #define COUNT_LCD_8 COUNT_LCD_7
990
-#endif
991
-#if ENABLED(VIKI2)
992
-  #define COUNT_LCD_9 INCREMENT(COUNT_LCD_8)
993
-#else
994
-  #define COUNT_LCD_9 COUNT_LCD_8
995
-#endif
996
-#if ENABLED(miniVIKI)
997
-  #define COUNT_LCD_10 INCREMENT(COUNT_LCD_9)
998
-#else
999
-  #define COUNT_LCD_10 COUNT_LCD_9
1000
-#endif
1001
-#if ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
1002
-  #define COUNT_LCD_11 INCREMENT(COUNT_LCD_10)
1003
-#else
1004
-  #define COUNT_LCD_11 COUNT_LCD_10
1005
-#endif
1006
-#if ENABLED(G3D_PANEL)
1007
-  #define COUNT_LCD_12 INCREMENT(COUNT_LCD_11)
1008
-#else
1009
-  #define COUNT_LCD_12 COUNT_LCD_11
1010
-#endif
1011
-#if ENABLED(MINIPANEL)
1012
-  #define COUNT_LCD_13 INCREMENT(COUNT_LCD_12)
1013
-#else
1014
-  #define COUNT_LCD_13 COUNT_LCD_12
1015
-#endif
1016
-#if ENABLED(REPRAPWORLD_KEYPAD) && DISABLED(CARTESIO_UI)
1017
-  #define COUNT_LCD_14 INCREMENT(COUNT_LCD_13)
1018
-#else
1019
-  #define COUNT_LCD_14 COUNT_LCD_13
1020
-#endif
1021
-#if ENABLED(RIGIDBOT_PANEL)
1022
-  #define COUNT_LCD_15 INCREMENT(COUNT_LCD_14)
1023
-#else
1024
-  #define COUNT_LCD_15 COUNT_LCD_14
1025
-#endif
1026
-#if ENABLED(RA_CONTROL_PANEL)
1027
-  #define COUNT_LCD_16 INCREMENT(COUNT_LCD_15)
1028
-#else
1029
-  #define COUNT_LCD_16 COUNT_LCD_15
1030
-#endif
1031
-#if ENABLED(LCD_I2C_SAINSMART_YWROBOT)
1032
-  #define COUNT_LCD_17 INCREMENT(COUNT_LCD_16)
1033
-#else
1034
-  #define COUNT_LCD_17 COUNT_LCD_16
1035
-#endif
1036
-#if ENABLED(LCM1602)
1037
-  #define COUNT_LCD_18 INCREMENT(COUNT_LCD_17)
1038
-#else
1039
-  #define COUNT_LCD_18 COUNT_LCD_17
1040
-#endif
1041
-#if ENABLED(LCD_I2C_PANELOLU2)
1042
-  #define COUNT_LCD_19 INCREMENT(COUNT_LCD_18)
1043
-#else
1044
-  #define COUNT_LCD_19 COUNT_LCD_18
1045
-#endif
1046
-#if ENABLED(LCD_I2C_VIKI)
1047
-  #define COUNT_LCD_20 INCREMENT(COUNT_LCD_19)
1048
-#else
1049
-  #define COUNT_LCD_20 COUNT_LCD_19
1050
-#endif
1051
-#if ENABLED(U8GLIB_SSD1306)
1052
-  #define COUNT_LCD_21 INCREMENT(COUNT_LCD_20)
1053
-#else
1054
-  #define COUNT_LCD_21 COUNT_LCD_20
1055
-#endif
1056
-#if ENABLED(SAV_3DLCD)
1057
-  #define COUNT_LCD_22 INCREMENT(COUNT_LCD_21)
1058
-#else
1059
-  #define COUNT_LCD_22 COUNT_LCD_21
1060
-#endif
1061
-#if ENABLED(BQ_LCD_SMART_CONTROLLER)
1062
-  #define COUNT_LCD_23 INCREMENT(COUNT_LCD_22)
1063
-#else
1064
-  #define COUNT_LCD_23 COUNT_LCD_22
1065
-#endif
1066
-#if ENABLED(SAV_3DGLCD)
1067
-  #define COUNT_LCD_24 INCREMENT(COUNT_LCD_23)
1068
-#else
1069
-  #define COUNT_LCD_24 COUNT_LCD_23
1070
-#endif
1071
-#if COUNT_LCD_24 > 1
1072
-  #error "Please select no more than one LCD controller option."
1073
-#endif
921
+static_assert(1 >= 0
922
+  #if ENABLED(ULTIMAKERCONTROLLER) \
923
+      && DISABLED(SAV_3DGLCD) && DISABLED(miniVIKI) && DISABLED(VIKI2) \
924
+      && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER) && DISABLED(PANEL_ONE)
925
+    + 1
926
+  #endif
927
+  #if ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) && DISABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
928
+    + 1
929
+  #endif
930
+  #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) && DISABLED(BQ_LCD_SMART_CONTROLLER)
931
+    + 1
932
+  #endif
933
+  #if ENABLED(CARTESIO_UI)
934
+    + 1
935
+  #endif
936
+  #if ENABLED(PANEL_ONE)
937
+    + 1
938
+  #endif
939
+  #if ENABLED(MAKRPANEL)
940
+    + 1
941
+  #endif
942
+  #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
943
+    + 1
944
+  #endif
945
+  #if ENABLED(VIKI2)
946
+    + 1
947
+  #endif
948
+  #if ENABLED(miniVIKI)
949
+    + 1
950
+  #endif
951
+  #if ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
952
+    + 1
953
+  #endif
954
+  #if ENABLED(G3D_PANEL)
955
+    + 1
956
+  #endif
957
+  #if ENABLED(MINIPANEL)
958
+    + 1
959
+  #endif
960
+  #if ENABLED(REPRAPWORLD_KEYPAD) && DISABLED(CARTESIO_UI)
961
+    + 1
962
+  #endif
963
+  #if ENABLED(RIGIDBOT_PANEL)
964
+    + 1
965
+  #endif
966
+  #if ENABLED(RA_CONTROL_PANEL)
967
+    + 1
968
+  #endif
969
+  #if ENABLED(LCD_I2C_SAINSMART_YWROBOT)
970
+    + 1
971
+  #endif
972
+  #if ENABLED(LCM1602)
973
+    + 1
974
+  #endif
975
+  #if ENABLED(LCD_I2C_PANELOLU2)
976
+    + 1
977
+  #endif
978
+  #if ENABLED(LCD_I2C_VIKI)
979
+    + 1
980
+  #endif
981
+  #if ENABLED(U8GLIB_SSD1306)
982
+    + 1
983
+  #endif
984
+  #if ENABLED(SAV_3DLCD)
985
+    + 1
986
+  #endif
987
+  #if ENABLED(BQ_LCD_SMART_CONTROLLER)
988
+    + 1
989
+  #endif
990
+  #if ENABLED(SAV_3DGLCD)
991
+    + 1
992
+  #endif
993
+  , "Please select no more than one LCD controller option."
994
+);

Завантаження…
Відмінити
Зберегти