我在C编译错误,涉及的宏,这是驾驶我坚果。这不是我的代码,而是广泛使用的库的一部分。我给你后面的故事,因为我知道我会问,否则。C代码宏编译错误(AOSP:外部/ clearsilver/util的/ neo_err.h)
我试图建立Android开源项目(AOSP)的Droid的2.3版,在Ubuntu v.16.04,通过GNU制作v.3.81。我遇到很多错误,这都与回本小学一:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
根据这个家伙的“问Ubuntu的”,他在安装libswitch-perl
后遇到这个问题:
那似乎是一个非常奇怪的原因!我从来没有以前编译AOSP,所以我不能做一个比较的要求。对于它的价值,我没有安装。
dpkg-query: package 'libswitch-perl' is not installed and no information is available
忽略其他任何东西,让我们来深入了解更多细节。下面是相关clearsilver码:上线时
#if defined(USE_C99_VARARG_MACROS)
#define nerr_raise(e,f,...) \
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
#elif defined(USE_GNUC_VARARG_MACROS)
#define nerr_raise(e,f,a...) \
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,##a)
#endif
NEOERR *nerr_raisef (const char *func, const char *file, int lineno,
NERR_TYPE error, const char *fmt, ...)
ATTRIBUTE_PRINTF(5,6);
错误:
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
我累了移动的宏定义到nerr_raisef函数定义之后,而且没有任何影响。我也试过这些行(这是失败的行之前插入),以帮助查找问题:
#define mytest1 __PRETTY_FUNCTION__
#define myitest2 __FILE__
#define mytest3 __LINE__
#define mytest4(...) __VA_ARGS__
#define mytest5(e,f) nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f)
#define mytest6(e,f,...) nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f)
#define mytest7(e,f,...) nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
#define mytest8(e,f,...) \
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
#ifdef nerr_raise
x
#endif
万无一失那些。请注意,mytest8
宏是完全相同的该死的东西,用不同的名称,并编译!此外,松散x
不包括在内,即nerr_raise先前未定义。
这里就是整个输出运行时,make
我得到:
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.4
TARGET_PRODUCT=imx53_smd
TARGET_BUILD_VARIANT=user
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GRJ22
============================================
build/core/main.mk:303: implicitly installing apns-conf_sdk.xml
find: ‘frameworks/base/frameworks/base/docs/html’: No such file or directory
find: ‘out/target/common/docs/gen’: No such file or directory
find: ‘frameworks/base/frameworks/base/docs/html’: No such file or directory
find: ‘out/target/common/docs/gen’: No such file or directory
find: ‘frameworks/base/frameworks/base/docs/html’: No such file or directory
find: ‘out/target/common/docs/gen’: No such file or directory
find: ‘frameworks/base/frameworks/base/docs/html’: No such file or directory
find: ‘out/target/common/docs/gen’: No such file or directory
find: ‘frameworks/base/frameworks/base/docs/html’: No such file or directory
find: ‘out/target/common/docs/gen’: No such file or directory
No private recovery resources for TARGET_DEVICE imx53_smd
host Java: droiddoc (out/host/common/obj/JAVA_LIBRARIES/droiddoc_intermediates/classes)
host C: libclearsilver-jni <= external/clearsilver/java-jni/j_neo_util.c
host C: libneo_util <= external/clearsilver/util/neo_files.c
host C: libneo_util <= external/clearsilver/util/ulist.c
host C: libneo_util <= external/clearsilver/util/neo_hdf.c
host C: libneo_util <= external/clearsilver/util/neo_str.c
host C: libneo_util <= external/clearsilver/util/ulocks.c
host C: libneo_util <= external/clearsilver/util/neo_hash.c
In file included from external/clearsilver/util/ulist.c:19:0:
external/clearsilver/util/ulist.c: In function ‘uListInit’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/ulist.c:64:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM, "Unable to create ULIST: Out of memory");
^
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/ulist.c:70:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM, "Unable to create ULIST: Out of memory");
^
external/clearsilver/util/ulist.c: In function ‘uListPop’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/ulist.c:124:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_OUTOFRANGE, "uListPop: empty list");
^
In file included from external/clearsilver/java-jni/j_neo_util.c:6:0:
external/clearsilver/java-jni/j_neo_util.c: In function ‘jni_fileload_cb’:
external/clearsilver/java-jni/../util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/java-jni/j_neo_util.c:257:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_ASSERT,
^
external/clearsilver/java-jni/../util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/java-jni/j_neo_util.c:268:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_ASSERT,
^
In file included from external/clearsilver/util/neo_files.c:26:0:
external/clearsilver/util/neo_files.c: In function ‘ne_listdir_fmatch’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_files.c:219:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_ASSERT, "Invalid call to ne_listdir_fmatch");
^
In file included from external/clearsilver/util/neo_hdf.c:24:0:
external/clearsilver/util/neo_hdf.c: In function ‘_alloc_hdf’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hdf.c:62:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise (NERR_NOMEM, "Unable to allocate memory for hdf element");
^
In file included from external/clearsilver/util/neo_str.c:22:0:
external/clearsilver/util/neo_str.c: In function ‘string_appendvf’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_str.c:167:14: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM,
^
external/clearsilver/util/neo_str.c: In function ‘string_array_split’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_str.c:223:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise (NERR_ASSERT, "separator must be at least one character");
^
external/clearsilver/util/neo_hdf.c: In function ‘hdf_set_attr’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hdf.c:409:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_ASSERT, "Unable to set attribute on none existant node");
^
external/clearsilver/util/neo_hdf.c: In function ‘_set_value’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hdf.c:648:14: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM, "Unable to allocate memory");
^
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hdf.c:795:16: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM, "Unable to allocate memory");
^
external/clearsilver/util/neo_hdf.c: In function ‘hdf_set_valuevf’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hdf.c:869:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM, "Unable to allocate memory for format string");
^
external/clearsilver/util/neo_hdf.c: In function ‘_copy_attr’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hdf.c:1028:14: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM, "Unable to allocate copy of HDF_ATTR");
^
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hdf.c:1036:14: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM, "Unable to allocate copy of HDF_ATTR");
^
In file included from external/clearsilver/util/ulocks.c:22:0:
external/clearsilver/util/ulocks.c: In function ‘fLock’:
external/clearsilver/util/neo_err.h:102:75: error: expected expression before ‘)’ token
nerr_raise_errnof(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/ulocks.c:96:12: note: in expansion of macro ‘nerr_raise_errno’
return nerr_raise_errno (NERR_LOCK, "File lock failed");
^
In file included from external/clearsilver/util/neo_hash.c:18:0:
external/clearsilver/util/neo_hash.c: In function ‘ne_hash_init’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hash.c:30:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM, "Unable to allocate memory for NE_HASH");
^
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hash.c:41:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM, "Unable to allocate memory for NE_HASHNODES");
^
external/clearsilver/util/neo_hdf.c: In function ‘hdf_write_string’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hdf.c:1342:28: note: in expansion of macro ‘nerr_raise’
if (*s == NULL) return nerr_raise(NERR_NOMEM, "Unable to allocate empty string");
^
external/clearsilver/util/neo_hash.c: In function ‘ne_hash_insert’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hash.c:91:14: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM, "Unable to allocate NE_HASHNODE");
^
external/clearsilver/util/neo_hash.c: In function ‘_hash_resize’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hash.c:229:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_NOMEM, "Unable to allocate memory to resize NE_HASH");
^
external/clearsilver/util/neo_hdf.c: In function ‘hdf_read_file’:
external/clearsilver/util/neo_err.h:88:69: error: expected expression before ‘)’ token
nerr_raisef(__PRETTY_FUNCTION__,__FILE__,__LINE__,e,f,__VA_ARGS__)
^
external/clearsilver/util/neo_hdf.c:1834:12: note: in expansion of macro ‘nerr_raise’
return nerr_raise(NERR_ASSERT, "Can't read NULL file");
^
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/j_neo_util.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_util_intermediates/neo_files.o] Error 1
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_util_intermediates/ulist.o] Error 1
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_util_intermediates/neo_str.o] Error 1
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_util_intermediates/ulocks.o] Error 1
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_util_intermediates/neo_hash.o] Error 1
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_util_intermediates/neo_hdf.o] Error 1
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
/bin/bash: jar: command not found
make: *** [out/host/common/obj/JAVA_LIBRARIES/droiddoc_intermediates/javalib.jar] Error 127
是整个错误? Usualy g ++将添加更多信息(注释),即。关于这个宏被使用的地方。通常原因可能是缺少在宏调用中使用的定义(空)。 – marcinj
还有其他一些与此相关的错误。我会发布这些以防万一。谢谢! – BuvinJ
查看修改后的帖子。 – BuvinJ