ใน C ++ 11 คุณสามารถประกาศตัวแปรส่วนกลางและฟังก์ชันต้นแบบในบรรทัดเดียวกันได้หรือไม่

Aug 20 2020

ในขณะที่ฉันเขียนโค้ด C ++ 11:

#include <bits/stdc++.h>
using namespace std;

int a, b, array[25];
int function();

int main() {
... (not important)

ด้วยความอยากรู้อยากเห็นฉันวางการประกาศตัวแปรไว้ในบรรทัดเดียวกับต้นแบบฟังก์ชัน:

#include <bits/stdc++.h>
using namespace std;

int function(), a, b, array[25];

int main() {
... (not important)

คอมไพล์อย่างถูกต้องบน XCode (ตั้งค่าเป็น [-std = c ++ 11]) และa, b, array[]สามารถใช้งานได้เหมือนตัวแปร / อาร์เรย์ปกติ

สิ่งนี้จะใช้ได้กับคอมไพเลอร์ส่วนใหญ่ / ทั้งหมดหรือไม่และสิ่งนี้ท้อใจ / ดีหรือไม่? เหตุใดสิ่งนี้จึงทำงานใน C ++ (ต้นแบบฟังก์ชันและการประกาศตัวแปรดูเหมือนแตกต่างกันมาก ... )

ขอขอบคุณล่วงหน้าสำหรับเวลาของคุณ

คำตอบ

2 molbdnilo Aug 20 2020 at 13:54

ประกาศบอกว่าfunction(x), a, bและarray[i]มีทั้งหมดints
(นี่คือประเภท "การอ่านแบบเก่า" - มันใช้ได้เสมอในภาษา C แต่ C ++ พังint *xสามารถอ่านได้ " *xเป็นint" แต่int &xไม่สามารถอ่านได้ " &xเป็นint")

สิ่งนี้ใช้ได้ดีมาตั้งแต่ยุคแรก ๆ ของ C (ประมาณครึ่งศตวรรษหรือมากกว่านั้น) และไม่ จำกัด เฉพาะการประกาศทั่วโลก

นอกจากนี้ยังสับสนมากและคุณจะไม่พบหลายคนที่คิดว่าเป็นความคิดที่ดี
ตอนนี้คนส่วนใหญ่ยอมแพ้กับการประกาศตัวแปรมากกว่าหนึ่งตัวในหนึ่งบรรทัด
โปรแกรมเริ่มต้นอ่านได้น้อยลงง่ายต่อการลืมและหน้าจอสามารถแสดงหลายบรรทัดพร้อมกันในปัจจุบัน