每次我在生命中使用pthread_create
时,都需要四个参数。出于某种原因,当我在使用android和JNI时尝试在C中创建一个线程时,我看到了这个:
发生了什么事
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
为什么我没有看到它?
修改
甚至更奇怪的是,我在#include <pthread.h>
上点击了Go to->Declaration
并点击了pthread_create
,向下滚动直到我看到<?php
if($_SERVER['REQUEST_METHOD'] =="POST"){
$email = $_POST['email'];
$username = $_POST['username'];
//if email and username is empty then do this
if(empty($email) && empty($username)){
$nullResult = array();
$nullResult['Email'] = (empty($email))? "empty" : "";
$nullResult['Username'] = (empty($username))? "empty" : "";
echo json_encode($nullResult);
exit();
}
//Connect to database
try{
// new php data object
$handler = new PDO('mysql:host=127.0.0.1;dbname=magicsever', 'root', '');
//ATTR_ERRMODE set to exception
$handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
die("There was an error connecting to the database");
}
//find email and username and Prepare
$emailQuery = $handler->prepare( "SELECT * FROM app_signup WHERE email = ?");
$usernameQuery = $handler->prepare("SELECT * FROM app_signup WHERE username = ?");
//Execute;
$emailQuery->execute(array($email));
$usernameQuery->execute(array($username));
//Check if the email is empty
if(empty($email)){
$nullResult = array();
$nullResult['Email'] = (!empty($email))? "empty" : "";
$nullResult['Username'] = ($usernameQuery->rowCount())? false: true;
echo json_encode($nullResult);
die("");
}else{
echo "Test";
}
}
?>
并显示正确的version: '3'
volumes:
node_deps:
services:
nginx:
build: ./nginx
image: nginx_i
container_name: nginx_c
ports:
- '80:80'
- '443:443'
links:
- node
restart: always
node:
build: ./node
image: node_i
container_name: node_c
command: "npm start"
ports:
- '5000:5000'
- '5001:5001'
- '5500:5000'
- '5501:5001'
volumes:
- ./node:/src
- node_deps:/src/node_modules
功能定义。
编辑2:
更奇怪的是,我现在意识到它编译得很好。它与编辑器有关。如果我输入四个参数,它在编辑器&#34;期望的1个参数&#34;中说,但它编译没有任何问题。但是,如果我只提供编辑想要的1个参数,则无法编译说&#34;预期的4个参数&#34;在错误日志中。
我不知道它是怎么回事。
答案 0 :(得分:1)
看起来Android Studio对NDK r15中现在使用的 _Nonnull 非常不满意。您可以选择GCC编译器
android { defaultConfig { externalNativeBuild { ndkBuild {
arguments "NDK_TOOLCHAIN_VERSION=4.9"
}}}}
或者您可以停用新的Unified Headers:
android { defaultConfig { externalNativeBuild { ndkBuild {
arguments "APP_DEPRECATED_HEADERS=true"
}}}}
或者您可以切换到NDK r14或更早。
我为Android Studio / C ++开发了一个issue。
答案 1 :(得分:0)
需要插入临时定义
onResume
到pthread.h以防止Android Studio显示错误。