为什么不推荐使用stdbool.h?

时间:2018-07-13 10:23:09

标签: c c11 stdbool

C standard now says

  

取消定义和重新定义宏bool,true和false的功能是一项过时的功能,在以后的版本中可能会删除。

即,use this code this is MainActivity.java public class MainActivity extends AppCompatActivity { String TAG="state"; EditText editText; android.support.v7.widget.Toolbar toolbar; TextView toolbarname; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbarname = findViewById(R.id.textview); } public void onclick(View view) { editText=findViewById(R.id.editText1); String name =editText.getText().toString(); toolbar=(android.support.v7.widget.Toolbar)findViewById(R.id.toolbar); if(name==null) Toast.makeText(this,"Email not Registered",Toast.LENGTH_LONG).show(); Toast.makeText(this,name,Toast.LENGTH_LONG).show(); //value is correct shown in toast toolbarname.setText(name); setSupportActionBar(toolbar); } } //-------------------------------------------------------- this is activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:background="@color/colorPrimary" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:gravity="right" android:text="name" android:id="@+id/textview" android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="?attr/colorBackgroundFloating" android:textSize="16dp" /> </LinearLayout> </android.support.v7.widget.Toolbar> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:width="200dp" android:inputType="text" android:saveEnabled="false" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.356" /> <Button android:onClick="newclick" android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginStart="8dp" android:layout_marginTop="280dp" android:text="Button" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.285" /> </RelativeLayout> 已过时。但是没有给出任何理由,我找不到一个理由。他们是打算永久性地将bool添加为基本类型,还是还有其他东西?

如果您碰巧知道为什么不赞成这样做,谢谢您告诉我!

2 个答案:

答案 0 :(得分:6)

您的问题中存在一些误解:

  • 第一个是您链接到POSIX引用,该引用通常遵循C标准,但并非必须如此。

  • 您引用的部分是信息,而不是事实,因此可能根本不反映C标准。因此,这也不是权威。

  • 引语还说,用户可以取消定义或重新定义宏的功能。 <stdbool.h>头文件中的宏将不受此影响。

  • 最后,它还说了 可能 的可能性,而不是它会或曾经的可能性。

答案 1 :(得分:6)

  

为什么不推荐使用stdbool.h?

不是。

您引用了以下注释:

  

取消定义和重新定义宏bool,true和false的功能是一项过时的功能,在以后的版本中可能会删除。

这意味着将来可以删除以下段落:

  

应用程序可能会取消定义,然后可能会重新定义宏bool,true和false。

这并不意味着标题或其内容将被删除。