Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เขียนโปรแกรม C ที่คอมไพล์ไม่ได้ใน C++


ที่นี่ เราจะเขียนโปรแกรม C บางอย่างที่ คอมไพล์ไม่ได้ใน C++ แม้ C++ จะถูกพิจารณาว่าเป็นผู้สืบทอดของ C ที่มีฟีเจอร์ครบและมีความเข้ากันได้กับโค้ด C แต่มีบางโปรแกรมที่คอมไพล์ไม่ผ่านหรือให้ compilation error เมื่อคอมไพล์ด้วยคอมไพลอร์ C++

รายการโปรแกรม C บางอย่างที่คอมไพล์ไม่ได้ใน C++:

  • เรียกฟังก์ชันก่อนการประกาศ (Call to a function before declaration) - ใน C++ การเรียกฟังก์ชันก่อนประกาศจะให้ compilation error แต่ใน C ทำงานได้ปกติ

ตัวอย่าง

#include <stdio.h>
int main() {
    printHello();
    return 0;
}
void printHello() {
    printf("TutorialsPoint");
}

ผลลัพธ์

TutorialsPoint
  • ใช้ Pointer ที่ typecast แล้ว (Using typecasted pointers) - ถ้าเราประกาศ pointer ใน C เป็น void แล้วใช้ pointer นี้ชี้ตัวแปรข้อมูลอื่น สามารถทำได้ใน C โดยคอมไพลอร์เอง แต่ใน C++ pointer เหล่านี้ต้อง typecast ให้ชัดเจน

ตัวอย่าง

#include <stdio.h>
int main() {
    void* ptr;
    int* ptr2 = ptr;  // Error ใน C++
    return 0;
}
  • ประกาศค่าคงที่ (constant) โดยไม่ initialize (Declaring constant values without initialising) - ใน C คุณสามารถประกาศค่าคงที่โดยไม่ให้ค่าใดๆ แต่มันจะคืน error ใน C++

ตัวอย่าง

#include <stdio.h>
int main() {
    const int x;
    printf("%d", x);  // Error ใน C++
    return 0;
}

ผลลัพธ์

0
  • ใช้ normal pointer กับตัวแปร const (Using normal pointer with const variable) - ใน C++ ไม่อนุญาต ในขณะที่ C อนุญาตให้ใช้ const variable กับ normal pointer

ตัวอย่าง

#include <stdio.h>
int main(void) {
    int const x = 3424;
    int* cptr = &x;  // Error ใน C++
    printf("value of pointer: %d\n", *cptr);
    return 0;
}

ผลลัพธ์

Value of pointer: 3424
  • ใช้คีย์เวิร์ดเฉพาะเป็นชื่อตัวแปร (Using specific keywords as variable names) - ในภาษา C การใช้คีย์เวิร์ดบางตัวเป็นชื่อตัวแปรถูกต้อง คือ จะคอมไพล์ได้ใน C แต่ไม่ได้ใน C++

ตัวอย่าง

#include <stdio.h>
int main(void) {
    int class = 5;  // 'class' เป็น keyword ใน C++
    printf("%d", class);
    return 0;
}

ผลลัพธ์

5

นี่คือคีย์เวิร์ดที่รวมอยู่ใน C++ อื่นๆ อีกมี new, delete, explicit, ฯลฯ