Knowledge (XXG)

Embedded C++

Source 📝

1165: 359: 290: 267: 228: 200: 177: 154: 127: 104: 283: 260: 221: 193: 170: 147: 120: 97: 416:
device drivers for Apple's macOS, iPadOS and iOS operating systems of the popular Macintosh, iPhone, and iPad products. Apple engineers felt the exceptions, multiple inheritance, templates, and runtime type information features of standard C++ were either insufficient or not efficient enough for use
407:
says, "To the best of my knowledge EC++ is dead (2004), and if it isn't it ought to be." In fact, the official English EC++ website has not been updated since 2002. Nevertheless, a restricted subset of C++ (based on Embedded C++) has been adopted by
597: 63:
construction simpler. The official website states the goal as "to provide embedded systems programmers with a subset of C++ that is easy for the average C programmer to understand and use".
672: 988: 980: 1643: 1638: 1201: 1169: 665: 638: 1648: 1224: 1607: 892: 568: 632: 907: 877: 503: 658: 525: 1134: 459: 298:
Some compilers, such as those from Green Hills and IAR Systems, allow certain features of ISO/ANSI C++ to be enabled in Embedded C++.
372: 897: 310:
An EC++ program can be compiled with any C++ compiler. But, a compiler specific to EC++ may have an easier time doing optimization.
1129: 1569: 1524: 1352: 1194: 1269: 1124: 1119: 1612: 24: 56: 55:, to address the shortcomings of C++ for embedded applications. The goal of the effort is to preserve the most useful 1559: 1529: 1653: 1514: 1506: 1259: 1187: 1080: 851: 208: 1539: 1519: 917: 902: 818: 803: 768: 742: 1367: 960: 950: 322: 139: 36: 833: 793: 1357: 379: 367: 1289: 1229: 856: 955: 841: 1617: 1551: 1330: 1239: 1144: 798: 783: 342: 112: 59:
features of the C++ language yet minimize code size while maximizing execution efficiency and making
383: 1415: 1347: 1254: 887: 576: 185: 1274: 1018: 275: 89: 808: 511: 1564: 1486: 1372: 1264: 1249: 1152: 925: 882: 552: 533: 404: 813: 763: 697: 463: 1453: 1362: 1301: 1279: 823: 777: 1337: 1325: 1284: 1210: 1060: 644: 40: 32: 970: 627: 1461: 1433: 1382: 1244: 403:
The language has had a poor reception with many expert C++ programmers. In particular,
337: 935: 930: 758: 1632: 1584: 1496: 1029: 846: 44: 1481: 1294: 1003: 965: 940: 1075: 1594: 1534: 1342: 434: 317: 299: 447: 1574: 1400: 1234: 1044: 872: 409: 330: 162: 547: 1471: 1065: 1013: 1070: 1428: 1320: 1311: 1039: 1034: 1008: 326: 60: 788: 737: 732: 727: 722: 717: 712: 707: 378:
Please help rewrite or integrate negative information to other sections
1589: 1476: 1466: 1405: 1392: 628:
Background and Objectives of the Embedded C++ Specification Development
52: 48: 1491: 1423: 993: 1179: 773: 702: 692: 681: 28: 1023: 998: 945: 639:
Building Bare-Metal ARM Systems with GNU: Part 1 - Getting Started
620: 1443: 1438: 1377: 1085: 1183: 654: 413: 352: 313:
Compilers specific to EC++ are provided by companies such as:
35:. It was defined by an industry group led by major Japanese 485: 650: 412:
as the exclusive programming language to create all
1550: 1505: 1452: 1414: 1391: 1310: 1217: 1143: 1110: 1094: 1053: 979: 916: 865: 832: 751: 273: 234: 206: 183: 160: 133: 110: 87: 1195: 666: 526:"Green Hills Optimizing C/C++/EC++ Compilers" 417:in a high-performance, multithreaded kernel. 8: 635:, John Carbone (Embedded.com), June 19, 1998 71:Embedded C++ excludes some features of C++. 1202: 1188: 1180: 673: 659: 651: 641:, Miro Samek, Quantum Leaps, June 26, 2007 73: 633:Embedded C++ Yields Faster Smaller Code 486:"IAR Systems - Compilers and debuggers" 426: 893:Resource acquisition is initialization 602:IOKit Device Driver Design Guidelines 7: 908:Substitution failure is not an error 878:Curiously recurring template pattern 647:, by WG 21 of ISO Subcommittee SC 22 460:"Embedded and Extended Embedded C++" 368:"criticism" or "controversy" section 302:calls this "Extended Embedded C++". 1135:Comparison of programming languages 645:Technical Report on C++ Performance 504:"Embedded C++ compiler technology" 14: 1644:Class-based programming languages 1164: 1163: 357: 288: 281: 265: 258: 226: 219: 198: 191: 175: 168: 152: 145: 125: 118: 102: 95: 1639:C++ programming language family 1525:Light-weight Linux distribution 1353:Hacking of consumer electronics 39:(CPU) manufacturers, including 1649:Hardware description languages 1130:Comparison of ALGOL 68 and C++ 1: 371:may compromise the article's 1613:List of open-source hardware 548:"What do you think of EC++?" 530:Green Hills Software website 926:Comparison of C++ compilers 282: 259: 220: 192: 169: 146: 119: 96: 1670: 1530:Real-time operating system 1125:Comparison of Java and C++ 1120:Compatibility of C and C++ 448:EC++ Questions and Answers 336:Tasking Software, part of 289: 266: 227: 199: 176: 153: 126: 103: 1603: 1515:Linux on embedded systems 1161: 688: 598:"The libkern C++ Runtime" 329:in 2004 who had acquired 209:Run-time type information 82: 79: 76: 31:programming language for 1520:Linux for mobile devices 903:Special member functions 819:Template metaprogramming 1368:PlayStation 3 Jailbreak 323:Freescale Semiconductor 140:storage class specifier 37:central processing unit 1358:Homebrew (video games) 1552:Programming languages 1290:Single-board computer 1230:Board support package 961:Oracle Solaris Studio 1618:Open-source robotics 1608:Lightweight browsers 1331:Proprietary firmware 1240:Consumer electronics 989:Comparison of C IDEs 799:Operator overloading 784:Function overloading 343:Green Hills Software 276:Virtual base classes 113:Multiple inheritance 67:Differences from C++ 1348:Defective by Design 1255:Embedded hypervisor 888:One Definition Rule 569:"What is Mac OS X?" 490:IAR Systems website 1416:Software libraries 1054:Superset languages 956:Intel C++ Compiler 774:Exception handling 380:through discussion 90:Exception handling 1626: 1625: 1565:Assembly language 1507:Operating systems 1487:Stand-alone shell 1454:Programming tools 1373:Rooting (Android) 1265:Embedded software 1250:Embedded database 1177: 1176: 1153:Bjarne Stroustrup 936:Borland Turbo C++ 883:Most vexing parse 824:Virtual functions 553:Bjarne Stroustrup 405:Bjarne Stroustrup 401: 400: 325:, (spin-off from 296: 295: 1661: 1654:Embedded systems 1363:iOS jailbreaking 1280:Memory footprint 1211:Embedded systems 1204: 1197: 1190: 1181: 1167: 1166: 834:Standard Library 789:Move constructor 778:Exception safety 769:Copy constructor 675: 668: 661: 652: 624: 623: 621:Official website 606: 605: 594: 588: 587: 585: 584: 575:. Archived from 565: 559: 558: 544: 538: 537: 532:. Archived from 522: 516: 515: 510:. Archived from 500: 494: 493: 482: 476: 475: 473: 471: 462:. Archived from 456: 450: 445: 439: 438: 435:"EC++ Rationale" 431: 396: 393: 387: 361: 360: 353: 292: 291: 285: 284: 278: 269: 268: 262: 261: 255: 253: 249: 248:reinterpret_cast 245: 241: 230: 229: 223: 222: 216: 214: 202: 201: 195: 194: 188: 179: 178: 172: 171: 165: 156: 155: 149: 148: 142: 137: 129: 128: 122: 121: 115: 106: 105: 99: 98: 92: 74: 33:embedded systems 1669: 1668: 1664: 1663: 1662: 1660: 1659: 1658: 1629: 1628: 1627: 1622: 1599: 1546: 1501: 1448: 1410: 1387: 1338:Closed platform 1326:Custom firmware 1306: 1285:Microcontroller 1213: 1208: 1178: 1173: 1157: 1139: 1113:other languages 1112: 1106: 1090: 1049: 975: 912: 861: 828: 747: 684: 679: 619: 618: 615: 610: 609: 596: 595: 591: 582: 580: 567: 566: 562: 546: 545: 541: 524: 523: 519: 508:Tasking website 502: 501: 497: 484: 483: 479: 469: 467: 458: 457: 453: 446: 442: 433: 432: 428: 423: 397: 391: 388: 377: 366:This article's 362: 358: 351: 308: 274: 251: 247: 243: 239: 237: 235: 212: 207: 184: 161: 135: 134: 111: 88: 69: 57:object-oriented 12: 11: 5: 1667: 1665: 1657: 1656: 1651: 1646: 1641: 1631: 1630: 1624: 1623: 1621: 1620: 1615: 1610: 1604: 1601: 1600: 1598: 1597: 1592: 1587: 1582: 1577: 1572: 1567: 1562: 1556: 1554: 1548: 1547: 1545: 1544: 1543: 1542: 1532: 1527: 1522: 1517: 1511: 1509: 1503: 1502: 1500: 1499: 1494: 1489: 1484: 1479: 1474: 1469: 1464: 1462:Almquist shell 1458: 1456: 1450: 1449: 1447: 1446: 1441: 1436: 1434:Embedded GLIBC 1431: 1426: 1420: 1418: 1412: 1411: 1409: 1408: 1403: 1397: 1395: 1389: 1388: 1386: 1385: 1383:Vendor lock-in 1380: 1375: 1370: 1365: 1360: 1355: 1350: 1345: 1340: 1335: 1334: 1333: 1328: 1317: 1315: 1308: 1307: 1305: 1304: 1299: 1298: 1297: 1287: 1282: 1277: 1272: 1267: 1262: 1257: 1252: 1247: 1245:Cross compiler 1242: 1237: 1232: 1227: 1221: 1219: 1215: 1214: 1209: 1207: 1206: 1199: 1192: 1184: 1175: 1174: 1162: 1159: 1158: 1156: 1155: 1149: 1147: 1141: 1140: 1138: 1137: 1132: 1127: 1122: 1116: 1114: 1108: 1107: 1105: 1104: 1098: 1096: 1092: 1091: 1089: 1088: 1083: 1078: 1073: 1068: 1063: 1057: 1055: 1051: 1050: 1048: 1047: 1042: 1037: 1032: 1026: 1021: 1016: 1011: 1006: 1001: 996: 991: 985: 983: 977: 976: 974: 973: 968: 963: 958: 953: 948: 943: 938: 933: 928: 922: 920: 914: 913: 911: 910: 905: 900: 895: 890: 885: 880: 875: 869: 867: 863: 862: 860: 859: 854: 849: 847:Smart pointers 844: 838: 836: 830: 829: 827: 826: 821: 816: 811: 806: 801: 796: 794:new and delete 791: 786: 781: 771: 766: 761: 755: 753: 749: 748: 746: 745: 740: 735: 730: 725: 720: 715: 710: 705: 700: 695: 689: 686: 685: 680: 678: 677: 670: 663: 655: 649: 648: 642: 636: 630: 625: 614: 613:External links 611: 608: 607: 589: 560: 539: 536:on 2008-10-25. 517: 514:on 2009-01-01. 495: 477: 466:on 21 May 2013 451: 440: 425: 424: 422: 419: 399: 398: 365: 363: 356: 350: 347: 346: 345: 340: 338:Altium Limited 334: 320: 307: 304: 294: 293: 286: 279: 271: 270: 263: 256: 232: 231: 224: 217: 204: 203: 196: 189: 181: 180: 173: 166: 158: 157: 150: 143: 131: 130: 123: 116: 108: 107: 100: 93: 85: 84: 81: 80:ISO/ANSI C C++ 78: 68: 65: 13: 10: 9: 6: 4: 3: 2: 1666: 1655: 1652: 1650: 1647: 1645: 1642: 1640: 1637: 1636: 1634: 1619: 1616: 1614: 1611: 1609: 1606: 1605: 1602: 1596: 1593: 1591: 1588: 1586: 1585:Embedded Java 1583: 1581: 1578: 1576: 1573: 1571: 1568: 1566: 1563: 1561: 1558: 1557: 1555: 1553: 1549: 1541: 1538: 1537: 1536: 1533: 1531: 1528: 1526: 1523: 1521: 1518: 1516: 1513: 1512: 1510: 1508: 1504: 1498: 1497:Yocto Project 1495: 1493: 1490: 1488: 1485: 1483: 1480: 1478: 1475: 1473: 1470: 1468: 1465: 1463: 1460: 1459: 1457: 1455: 1451: 1445: 1442: 1440: 1437: 1435: 1432: 1430: 1427: 1425: 1422: 1421: 1419: 1417: 1413: 1407: 1404: 1402: 1399: 1398: 1396: 1394: 1390: 1384: 1381: 1379: 1376: 1374: 1371: 1369: 1366: 1364: 1361: 1359: 1356: 1354: 1351: 1349: 1346: 1344: 1341: 1339: 1336: 1332: 1329: 1327: 1324: 1323: 1322: 1319: 1318: 1316: 1313: 1309: 1303: 1300: 1296: 1293: 1292: 1291: 1288: 1286: 1283: 1281: 1278: 1276: 1273: 1271: 1268: 1266: 1263: 1261: 1258: 1256: 1253: 1251: 1248: 1246: 1243: 1241: 1238: 1236: 1233: 1231: 1228: 1226: 1223: 1222: 1220: 1218:General terms 1216: 1212: 1205: 1200: 1198: 1193: 1191: 1186: 1185: 1182: 1172: 1171: 1160: 1154: 1151: 1150: 1148: 1146: 1142: 1136: 1133: 1131: 1128: 1126: 1123: 1121: 1118: 1117: 1115: 1109: 1103: 1100: 1099: 1097: 1093: 1087: 1084: 1082: 1079: 1077: 1074: 1072: 1069: 1067: 1064: 1062: 1061:Objective-C++ 1059: 1058: 1056: 1052: 1046: 1043: 1041: 1038: 1036: 1033: 1031: 1030:Visual Studio 1027: 1025: 1022: 1020: 1017: 1015: 1012: 1010: 1007: 1005: 1002: 1000: 997: 995: 992: 990: 987: 986: 984: 982: 978: 972: 969: 967: 964: 962: 959: 957: 954: 952: 949: 947: 944: 942: 939: 937: 934: 932: 929: 927: 924: 923: 921: 919: 915: 909: 906: 904: 901: 899: 898:Rule of three 896: 894: 891: 889: 886: 884: 881: 879: 876: 874: 871: 870: 868: 864: 858: 855: 853: 850: 848: 845: 843: 840: 839: 837: 835: 831: 825: 822: 820: 817: 815: 812: 810: 807: 805: 802: 800: 797: 795: 792: 790: 787: 785: 782: 779: 775: 772: 770: 767: 765: 762: 760: 757: 756: 754: 750: 744: 741: 739: 736: 734: 731: 729: 726: 724: 721: 719: 716: 714: 711: 709: 706: 704: 701: 699: 696: 694: 691: 690: 687: 683: 676: 671: 669: 664: 662: 657: 656: 653: 646: 643: 640: 637: 634: 631: 629: 626: 622: 617: 616: 612: 603: 599: 593: 590: 579:on 2019-04-19 578: 574: 570: 564: 561: 556: 554: 549: 543: 540: 535: 531: 527: 521: 518: 513: 509: 505: 499: 496: 491: 487: 481: 478: 465: 461: 455: 452: 449: 444: 441: 436: 430: 427: 420: 418: 415: 411: 406: 395: 385: 381: 375: 374: 369: 364: 355: 354: 348: 344: 341: 339: 335: 332: 328: 324: 321: 319: 316: 315: 314: 311: 305: 303: 301: 287: 280: 277: 272: 264: 257: 233: 225: 218: 210: 205: 197: 190: 187: 182: 174: 167: 164: 159: 151: 144: 141: 132: 124: 117: 114: 109: 101: 94: 91: 86: 83:Embedded C++ 75: 72: 66: 64: 62: 58: 54: 50: 46: 42: 38: 34: 30: 26: 22: 18: 1580:Embedded C++ 1579: 1482:OpenEmbedded 1393:Boot loaders 1314:and controls 1295:Raspberry Pi 1168: 1102:Embedded C++ 1101: 1004:Code::Blocks 971:Watcom C/C++ 601: 592: 581:. Retrieved 577:the original 572: 563: 551: 542: 534:the original 529: 520: 512:the original 507: 498: 489: 480: 468:. Retrieved 464:the original 454: 443: 429: 402: 389: 370: 312: 309: 297: 244:dynamic_cast 70: 20: 17:Embedded C++ 16: 15: 1595:MicroPython 1535:Windows IoT 1343:Crippleware 1260:Embedded OS 1111:Relative to 931:Borland C++ 842:I/O Streams 318:IAR Systems 306:Compilation 300:IAR Systems 240:static_cast 236:Style casts 1633:Categories 1575:Embedded C 1235:Bootloader 1045:Qt Creator 1028:Microsoft 966:Visual C++ 941:C++Builder 873:As-if rule 809:References 583:2015-03-04 573:Amit Singh 470:9 December 421:References 410:Apple Inc. 373:neutrality 331:Metrowerks 252:const_cast 163:Namespaces 1472:Buildroot 1076:C++/WinRT 918:Compilers 814:Templates 804:Operators 743:Libraries 384:talk page 349:Criticism 186:Templates 1429:dietlibc 1321:Firmware 1312:Firmware 1170:Category 1145:Designer 1095:Dialects 1040:KDevelop 1035:NetBeans 1009:CodeLite 764:Concepts 752:Features 392:May 2018 333:in 1999) 327:Motorola 61:compiler 1590:MISRA C 1477:BusyBox 1467:BitBake 1406:Barebox 1066:C++/CLI 1019:Eclipse 1014:Dev-C++ 857:Strings 759:Classes 698:Outline 414:I/O Kit 382:on the 136:mutable 77:Feature 53:Toshiba 49:Fujitsu 45:Hitachi 27:of the 25:dialect 23:) is a 1540:Win CE 1492:Toybox 1424:uClibc 1401:U-Boot 1071:C++/CX 994:Anjuta 555:'s FAQ 250:, and 213:typeid 51:, and 1024:Geany 999:CLion 946:Clang 866:Ideas 738:C++26 733:C++23 728:C++20 723:C++17 718:C++14 713:C++11 708:C++03 703:C++98 1570:CAPL 1444:musl 1439:lwIP 1378:UEFI 1270:FPGA 1225:ASIC 1086:SYCL 981:IDEs 472:2012 138:, a 21:EC++ 1560:Ada 1302:SoC 1275:IoT 951:GCC 852:STL 693:C++ 682:C++ 41:NEC 29:C++ 1635:: 1081:Ch 600:. 571:. 550:. 528:. 506:. 488:. 246:, 242:, 47:, 43:, 1203:e 1196:t 1189:v 780:) 776:( 674:e 667:t 660:v 604:. 586:. 557:. 492:. 474:. 437:. 394:) 390:( 386:. 376:. 254:) 238:( 215:) 211:( 19:(

Index

dialect
C++
embedded systems
central processing unit
NEC
Hitachi
Fujitsu
Toshiba
object-oriented
compiler
Exception handling
Multiple inheritance
storage class specifier
Namespaces
Templates
Run-time type information
Virtual base classes
IAR Systems
IAR Systems
Freescale Semiconductor
Motorola
Metrowerks
Altium Limited
Green Hills Software
"criticism" or "controversy" section
neutrality
through discussion
talk page
Bjarne Stroustrup
Apple Inc.

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.