我使用crash
函数来测试Crashlytics集成,但我显然不想在应用程序中发送该代码。
可能会使标识符中毒,以便当前或将来的任何使用都会导致错误:
#pragma GCC poison crash
是否有等效的#pragma
指令在使用标识符时发出警告?我希望能够构建代码库,同时保留一个需要注意的可见指示符。
答案 0 :(得分:3)
这应该可行,现在_Pragma
可用。您可以#pragma GCC poison
使用#define
生成警告,而不是使用crash
#pragma GCC warning
标识#define DO_PRAGMA(x) _Pragma(#x)
#define WARN(x) DO_PRAGMA(GCC warning #x)
#define crash WARN("crash" used) crash
:
crash
前两个宏只是减少了引号的工作量。请注意_Pragma
扩展为自身(以及warning
),这是有效的,因为C预处理器不会在其自己的扩展中扩展令牌。
如果您将error
更改为-Werror
,则会收到错误。您可以通过使用更多宏来轻松安排更改所有这些,或者您可以使用 public void doTakePhotoAction() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// tempdirectory
String url = "tmp_" + String.valueOf(System.currentTimeMillis()) + ".jpg";
mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), url));
Log.e("mImageCaptureUri", mImageCaptureUri.toString());
intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
this.startActivityForResult(intent, PICK_FROM_CAMERA);
Log.d("ididid", getParentFragment().getId() + "");
Log.d("ididid", getParentFragment().getTag()+"");
Log.d("ididid", getActivity()+"");
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("onActivityResult","onActivityResult");
if (resultCode != RESULT_OK) {
return;
}
switch (requestCode) {
case PICK_FROM_CAMERA: {
try {
String temp = mImageCaptureUri.toString();
temp.replace("file://", "");
Uri final_uri = Uri.parse(temp);
Log.e("final_uri", final_uri.toString());
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
}
答案 1 :(得分:0)
您可以使用#warning
用法如下:
#warning This is a custom message